Чи існує глобальна, стійка історія CMD?


99

Іноді я забуваю, як виглядає точний синтаксис команди CMD, і тоді я хотів би шукати свою власну історію CMD. Зрозуміло, що в межах одного сеансу ви можете переглядати його за допомогою клавіш зі стрілками вгору та вниз, але як бути з історією колишніх сесій CMD? Чи є файл, журнал, до якого записується історія, чи все переходить до цифрової Nirvana?

Дякую!


Ви можете викрасти команду exit, щоб автоматично зберігати журнал перед виходом: doskey exit=doskey /history ^>^> C:\path\to\cmdhistory.log $T exit $*але вам потрібно буде з'ясувати, як це виконати автоматично при кожному запуску сеансу командного рядка. PS: Переконайтеся, що шлях журнального файла записується. C:\ не піддається написанню для командного рядка, який не використовується адміністратором.
— ADTC

@ADTC: AutoRun повинен обробляти 'кожен запуск': superuser.com/a/302553/333316 або stackoverflow.com/a/17405182/2868801
— dave_thompson_085

Відповіді:


29

Ні, історію командних рядків Windows не можна зберегти, коли сеанс закінчується.


3
насправді? як ти це знаєш? Вибачте за те, що вас розпитували, я гадаю, що ви праві, але як ви можете знати, якщо ви не запрограмували прокляту річ;)
— raoulsson

7
Гаразд, дозвольте перефразувати :-) Інтерпретатор команд Windows ("cmd.exe") не забезпечує жодної підтримки для збереження / експорту / зберігання історії, якщо це так, Microsoft не документував це і ніхто ніколи не міг щоб знайти його. Звичайно, ви можете спробувати обійти це, як запропонував Шон, але вбудованої підтримки для цього немає (або, здається, немає).
— Массімо

18
Ви можете натиснути клавішу F7, щоб побачити список історії поточного сеансу.
— jftuga

4
СУЧАСНІЙ сеанс - ключове слово тут.
— Массімо

3
Ви можете переглянути / зберегти історію, запустивши doskey.exe /history(там також походить ярлик F7, BTW), але немає можливості завантажити її назад у наступному сеансі.
— Кодерер

68

Не місцево, але перевірте: http://mridgers.github.io/clink/ , робить cmd.exe набагато продуктивнішим. Цитування функцій зі сторінки проекту:

Powerful Bash-like line editing from GNU's Readline library.
Superior path completion (TAB).
Paste from clipboard (Ctrl-V).
Support for the completion of executables/commands, and environment variables.
Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
Improved command line history.
Persists across sessions.
Searchable (Ctrl-R and Ctrl-S).
History expansion (e.g. !!, !<string>, and !$).
Scriptable completion using Lua.

3
clink вирішив все
— таки.Tony

5
Будь-які плани включити його за замовчуванням у Windows? : D
— Хайме Хаблуцель

Чи можете ви встановити a ~/.inputrcпри використанні кліку? (а чи знаєте ви, чи можна використовувати Консоль чи що-небудь?)
— Майк HR


... крім псевдонімів. clinkненавидить doskey; забудьте всі свої багаторічні та ретельно призначені псевдоніми. ось чому я перестав його використовувати. хоча я пропускаю всі функції.

15

Массімо правильно, що історія вашого командного рядка не зберігається протягом сеансів. Ви можете вручну схопити це перед закриттям підказки, ввівши doskey / history> history.txt

Або ... ви можете використовувати PowerShell як підказку CMD, і дотримуйтесь цього повідомлення, щоб зберегти свою історію протягом сеансів.


11

Ви можете використовувати клік .

Clink поєднує вбудовану оболонку Windows cmd.exe з потужною функцією редагування командного рядка бібліотеки Readline GNU, яка забезпечує багаті можливості завершення, історії та редагування рядків.

Найпростіший спосіб встановити клінк - це використання шоколаду . Щойно ви встановите шоколадний, ви можете встановити клік, ввівши

choco install clink

Починаючи з наступного запуску cmd.exe, він повинен зберігати історію протягом сеансів.


Нарешті вирішив дати Chocolateyпостріл через цю посаду. Установка була такою ж простою, як і brewв macOS. І тепер у мене є Windows-командний рядок у Windows!
— TranslucentCloud

6

Можна зберегти поточну історію у файлі,

`$ doskey /history > somefile.txt`

Але, здається, немає можливості завантажити його назад як історію. Можна використовувати аргумент командного рядка лише для завантаження та виконання всіх рядків,

cmd.exe /K somefile.txt

, що може бути корисним для завантаження списку макросів doskey. Це виклик може бути включено до ярлика, тому вам не потрібно вводити його щоразу; ця посилання містить деяку додаткову інформацію щодо цього підходу .

Існує аналогічне питання щодо Superuser, яке пропонує деякі альтернативи, включаючи клік , як запропонував @RobertBak.


Хм, щоб завантажити його назад в історію, вам не потрібно було просто зберегти його у .bat файл і запустити його?
— Pacerier

1
@Pacerier знову запускає команди, безумовно, включить їх назад в історію, але це, ймовірно, матиме великі побічні ефекти. Уявіть, що ви видаляєте деякі файли через оболонку, а потім відтворюєте їх за межами оболонки через довгий і болісний процес. Перезавантаження історії через процедуру несподівано знову видалить файли.
— mMontu

@Pacerier ви розумієте, що "запустити його" означає виконання всіх цих команд, правда? Це не просто завантажувати їх в історію, а фактично дозволяти їм мати певний вплив на вашу систему.
— ADTC

1

Історія команд: Щоб увімкнути історію команд (доступ до якої можна отримати за допомогою клавіш зі стрілками вгору та вниз), просто виконайте doskey в командному рядку. Наприклад, для створення історії команд із 100 елементів:

doskey /listsize=100

посилання: https://users.cs.jmu.edu/bernstdh/web/common/help/ntshell.php


3
Це зовсім не відповідає на питання ??
— Chopper3

1
Не працює в Windows 10.
— TranslucentCloud

1

clink є приємним, і автор публікує шоколадний пакет на кожному випуску, проте я б запропонував DeepBlueCLI.

Ви можете використовувати https://github.com/sans-blue-team/DeepBlueCLI для налаштування ідентифікатора події Windows Security 4688.

Для PowerShell DeepBlueCLI також використовує журнал модулів (PowerShell подія 4013) та журнал блоку скриптів (4104). Він не використовує транскрипцію.

Додатковою перевагою є те, що він записує хеш файлу exe командного рядка в журнал подій AppLocker. Джерело: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

Крім того, оскільки це рішення використовує інфраструктуру Журналу подій Windows, ви можете запитувати його через WMI або PowerShell Get-EventLog. За допомогою clink ви повинні вивчити інший інструмент, щоб виявити закономірності поведінки на рівні системи чи мережі.


1
подія 4688 - це ключ, і це центральний сховище, як Windows записує всі виконані команди. усі інші інструменти просто читають, шукаючи цю подію. Дякую. Але за замовчуванням це не увімкнено: itprotoday.com/strategy/…
— Петро Тео
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.