Mantenere la cronologia dei comandi cmd.exe tra le sessioni?


Risposte:


22

Passare a utilizzare PowerShell e seguire le istruzioni nel sito seguente per abilitare la cronologia:

http://blogs.msdn.com/b/powershell/archive/2006/07/01/perserving-command-history-across-sessions.aspx

In alternativa, in cmd.exe, è possibile utilizzare "doskey / history" alla fine della sessione per mostrare ciò che è stato digitato in quella sessione, ma non c'è modo di caricarlo realmente nella sessione successiva.


6
Ho esitato a +1 perché "Passa all'utilizzo di PowerShell" non è necessariamente così semplice come sembra a seconda del tipo di cose per cui stai usando la console, ma le informazioni sono accurate soooooooooo;)
Shinrai

2
Concordato. Ho esitato a metterlo giù ma è l'unica vera risposta che riesco a trovare. Ho provato a ottenere qualcosa di simile su una workstation che avevo prima, ma non esiste un meccanismo di cronologia persistente disponibile per cmd.exe :-(
Hyppy

Nota che questo manterrà un elenco di comandi digitati, ma NON altera l'elenco di comandi che apparirà quando premi il tasto su della tastiera. Non influisce sulla funzionalità "doskey", in altre parole.
Segna il

Va notato che alcuni comandi che funzionano in cmd non funzionano allo stesso modo in PowerShell, ad esempio mvn install `-Dmaven.test.skip = true richiederebbe un backtick come mostrato prima del trattino
Drenai,

62

Ho trovato 2 modi, nessuno dei quali richiede il passaggio a PowerShell.

  1. Installa Clink , che migliora cmd.execon la cronologia persistente e molto altro. Basta installarlo e quindi aprirlo cmdnormalmente.

  2. Installa la versione gratuita di TCC / LE , che è un programma separato, fornendo di nuovo una versione avanzata di cmd.exe.


5
Sono un po 'preoccupato per la sostituzione a livello di sistema, cmd.exema è una buona risposta, e il tintinnio supporta anche una modalità di iniezione.
Lorenz Lo Sauer,

4
Wow, Clink è fantastico.
Chris Weber,

4
Il tintinnio è geniale. Sostituito cmdcon esso, nessun problema, molto soddisfatto.
Colonnello Panic,

2
Il tintinnio è fantastico!
Hoang Huynh,

3
Questa dovrebbe essere la risposta accettata. Perché questo è ciò che è stato posto dalla domanda .. !! È preferibile piuttosto che utilizzare qualsiasi altra applicazione alternativa.
Samitha Chathuranga,

12

Il salvataggio della cronologia è un piccolo flusso di lavoro: ecco un modo meno "pesante" per farlo (niente librerie esterne).

Crea un file bat / cmd per impostare la tua cronologia, in questo caso l'ho chiamato MyEnvironment.cmd:

doskey save=doskey /history $g$g C:\CmdHistory.log
doskey quit=doskey /history $g$g C:\CmdHistory.log $T exit
doskey history=find /I "$*" C:\CmdHistory.log
cls

Quindi esegui questo da "Start-> Esegui" (puoi anche impostare un alias anche per questo):

cmd.exe /K C:\MyEnvironment.cmd

Ogni volta che chiudo una sessione premo "esci" - o se ho paura di perdere la cronologia a metà sessione premo "salva". Se voglio chiedere qualcosa nella storia, premo semplicemente "cronologia PAROLA CHIAVE".


Per il commento di @ dave_thompson_085, la AutoRunfunzione funziona bene se non si desidera utilizzare l' /Kopzione. Se la chiave di registro è stata impostata correttamente, non è necessario che sia presente .cmdo .batmeno %AppData%, può trovarsi nella stessa posizione in cui si trova già.

Se si utilizza la %AppData%posizione, tenere presente che cmd probabilmente cercherà il file batch nella cartella "Roaming" (anziché nella radice AppData).

Maggiori informazioni sulla AutoRunfunzione CMD: https://superuser.com/a/302553/333316


Cosa $ge a cosa $tservono?

@ Chinggis6 $ginserisce a >ed $tè un separatore di comandi.
Superole,

@Superole ah ok, g reater than e t erminate, ma perché non usare >e &&caratteri direttamente nell'alias doskey?

@ Chinggis6 perché ciò spezzerebbe il comando creando l'alias. Quindi l'interprete dei comandi supponeva che intendevi: eseguire prima doskey quit=doskey /historye salvare l'output della creazione della macro in un file di log (niente o un errore); poi chiudi la finestra (scartando tutto). -Potresti sfuggire a quei personaggi con un ^invece, credo. Come ^>^>e ^&(... e sì, hai solo bisogno di una e commerciale)
Superole

1
Invece di esplicito /kpuoi usare AutoRun superuser.com/a/302553/333316
dave_thompson_085

2

Uso cygwin . Fornisce anche alcune altre funzionalità che Linux ha ma Windows no.

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.