Чи існує глобальна, стійка історія 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.