Esiste una storia globale e persistente di CMD?


99

A volte dimentico come appare l'esatta sintassi di un comando CMD e quindi vorrei cercare nella mia cronologia CMD. Chiaramente, all'interno della stessa sessione, è possibile sfogliarlo con i tasti freccia su e giù, ma per quanto riguarda la cronologia delle precedenti sessioni CMD? Esiste un file, un registro in cui viene scritta la cronologia o tutto va nel Nirvana digitale?

Grazie!


Puoi dirottare il comando exit per salvare automaticamente un registro prima di uscire: doskey exit=doskey /history ^>^> C:\path\to\cmdhistory.log $T exit $*ma dovrai capire come eseguirlo automaticamente all'avvio di ogni sessione del prompt dei comandi. PS: assicurati che il percorso del file di registro sia scrivibile. C:\ non è scrivibile per un prompt dei comandi non amministratore.
ADTC

Risposte:


30

No, la cronologia del prompt dei comandi di Windows non può essere salvata al termine di una sessione.


3
davvero? Come fai a saperlo? Scusa se ti ho interrogato, immagino tu abbia ragione, ma come fai a sapere se non hai programmato la dannata cosa;)
raoulsson,

7
Ok, fammi riformulare :-) L'interprete dei comandi di Windows ("cmd.exe") non fornisce alcun supporto per il salvataggio / esportazione / conservazione della cronologia, se, in tal caso, Microsoft non l'ha documentata e nessuno è mai stato in grado per trovarlo. Ovviamente puoi provare a aggirare il problema, come suggerito da Sean, ma non c'è (o sembra essere) nessun supporto integrato per questo.
Massimo,

18
È possibile premere F7 per visualizzare un elenco cronologico della sessione corrente.
jftuga,

4
La sessione ATTUALE è la parola chiave qui.
Massimo,

3
È possibile visualizzare / salvare la cronologia eseguendo doskey.exe /history(è anche da lì che proviene il collegamento F7, BTW) ma non c'è modo di ricaricarlo nella prossima sessione.
Coderer

68

Non nativamente ma controlla: http://mridgers.github.io/clink/ , rende cmd.exe molto più produttivo. Citando le funzionalità dalla pagina del progetto:

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
il tintinnio risolse tutto
Still.Tony,

5
Hai intenzione di includerlo per impostazione predefinita in Windows? : D
Jaime Hablutzel

Puoi impostare un ~/.inputrcquando usi il tintinnio? (e sai se può essere utilizzato Console o altro?)
Mike HR

Apparentemente, consultare il documento github.com/mridgers/clink/blob/master/docs/clink.md .
Baris Demiray,

... tranne gli alias. clinkodia doskey; dimentica tutti i tuoi alias lunghi e attentamente assegnati. ecco perché ho smesso di usarlo. anche se mi mancano tutte le funzionalità.

15

Massimo ha ragione che la cronologia del prompt dei comandi non persiste per tutte le sessioni. È possibile afferrarlo manualmente prima di chiudere il prompt digitando doskey / history> history.txt

Oppure ... potresti usare PowerShell come prompt di CMD e seguire questo post per mantenere la cronologia tra le sessioni.


11

Puoi usare il tintinnio .

Clink combina la shell nativa cmd.exe di Windows con le potenti funzionalità di modifica della riga di comando della libreria GNU Readline, che offre funzionalità complete di completamento, cronologia e modifica delle linee.

Il modo più semplice per installare il tintinnio è usare il cioccolato . Una volta installato Chocolatey, puoi installare il tintinnio digitando

choco install clink

A partire dal prossimo avvio di cmd.exe, dovrebbe archiviare la cronologia tra le sessioni.


Alla fine ho deciso di provare Chocolateya causa di questo post. L'installazione è stata semplice come brewin macOS. E ora ho un prompt dei comandi simile a Bash in Windows!
TranslucentCloud

6

È possibile salvare la cronologia corrente su file,

`$ doskey /history > somefile.txt`

Ma sembra che non ci sia modo di ricaricarlo come storia. È possibile utilizzare solo un argomento della riga di comando per caricare ed eseguire tutte le righe,

cmd.exe /K somefile.txt

, cosa può essere utile per caricare un elenco di macro doskey. Questa chiamata potrebbe essere inclusa in una scorciatoia, quindi non è necessario digitarla ogni volta; questo riferimento ha alcune informazioni aggiuntive su questo approccio .

C'è una domanda simile su Superuser che offre alcune alternative, incluso il tintinnio , come suggerito da @RobertBak.


Hmm, per ricaricarlo nella storia, non avresti semplicemente bisogno di salvarlo in un file .bat ed eseguirlo?
Pacerier,

1
@Pacerier eseguendo nuovamente i comandi li includerebbe sicuramente nella storia, ma probabilmente avrebbe effetti collaterali di grandi dimensioni. Immagina di eliminare alcuni file attraverso la shell e di ricrearli all'esterno della shell attraverso un processo lungo e doloroso. Ricaricare la cronologia tramite la procedura eliminerebbe inaspettatamente di nuovo i file.
mMontu,

@Pacerier ti rendi conto che "eseguilo" significa eseguire tutti quei comandi, giusto? Non si tratta semplicemente di caricarli nella cronologia, ma in realtà lasciare loro alcuni effetti sul tuo sistema.
ADTC


1

il tintinnio è bello e l'autore pubblica un pacchetto cioccolatoso su ogni versione, tuttavia suggerirei DeepBlueCLI.

È possibile utilizzare https://github.com/sans-blue-team/DeepBlueCLI per impostare l'ID evento di sicurezza di Windows 4688.

Per PowerShell, DeepBlueCLI utilizza anche la registrazione dei moduli (evento PowerShell 4013) e la registrazione dei blocchi di script (4104). Non usa la trascrizione.

Il vantaggio aggiuntivo è che registra l'hash della riga di comando exe nel registro eventi di AppLocker. Fonte: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

Inoltre, poiché questa soluzione utilizza l'infrastruttura del registro eventi di Windows, è possibile interrogarla tramite WMI o PowerShell Get-EventLog. Con il tintinnio, devi imparare un altro strumento per rilevare schemi di comportamento a livello di sistema o di rete.


1
L'evento 4688 è la chiave e questo è l'archivio centrale in cui Windows registra tutti i comandi eseguiti. tutti gli altri strumenti stanno solo leggendo alla ricerca di questo evento. Grazie. Ma per impostazione predefinita non è abilitato: itprotoday.com/strategy/…
Peter Teoh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.