Manter o histórico de comandos do cmd.exe entre sessões?

75

Existe uma maneira de manter o histórico de comandos do cmd entre as sessões?

firefusion
fonte

Respostas:

22

Alterne para usar o PowerShell e siga as instruções no site a seguir para habilitar o histórico:

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

Como alternativa, no cmd.exe, você pode usar "doskey / history" no final da sessão para mostrar o que você digitou nessa sessão, mas não há como carregá-lo realmente na próxima sessão.

Hyppy
fonte
6
I hestitated para +1 isso porque "Mudar para usar PowerShell" não é necessariamente tão fácil como parece, dependendo do que tipo de material que você está usando o console para, mas a informação é soooooooooo precisa;)
Shinrai
2
Acordado. Hesitei em anotar, mas é a única resposta real que posso encontrar. Tentei obter algo semelhante acontecendo uma estação de trabalho que eu tinha antes, mas simplesmente não há um mecanismo história persistente disponível para :-( cmd.exe
Hyppy
Observe que isso manterá uma lista de comandos digitados, mas NÃO altera a lista de comandos que aparecerão quando você pressionar a tecla para cima no teclado. Não afeta a funcionalidade "doskey", em outras palavras.
Mark
Note-se que alguns comandos que funcionam em cmd não funcionam da mesma forma em PowerShell por exemplo mvn instalar `-Dmaven.test.skip = true iria requer um backtick como mostrado antes do traço
Drenai
62

Encontrei duas maneiras, nenhuma das quais exige a mudança para o PowerShell.

  1. Instale o Clink , que aprimora cmd.execom histórico persistente e muito mais. Basta instalar e abrir cmdnormalmente.

  2. Instale a versão gratuita do TCC / LE , que é um programa separado, fornecendo novamente uma versão aprimorada do cmd.exe.

sparrowt
fonte
5
Estou um pouco apreensivo contra a substituição em todo o sistema, cmd.exemas é uma boa resposta, e o clink também suporta um modo de injeção.
Lorenz Lo Sauer
4
Uau, Clink é fantástico.
Chris Weber
4
Clink é brilhante. Substituído cmdpor ele, não houve problemas, muito feliz com ele.
Coronel Panic
2
Clink é incrível!
Hoang Huynh
3
Essa deve ser a resposta aceita. Porque é isso que a pergunta faz .. !! Isso é melhor do que usar qualquer outro aplicativo alternativo.
Samitha Chathuranga 15/11/2015
12

Salvar histórico é um pequeno fluxo de trabalho - eis uma maneira menos "pesada" de fazer isso (sem bibliotecas externas).

Crie um arquivo bat / cmd para configurar seu histórico, neste caso, chamei de 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

Em seguida, execute isso em "Iniciar-> Executar" (você também pode configurar um alias para isso):

cmd.exe /K C:\MyEnvironment.cmd

Toda vez que fecho uma sessão, clico em "sair" - ou, se tenho medo de perder o histórico no meio da sessão, clico em "salvar". Se eu quero grep para algo na história, eu apenas clico em "history KEYWORD".


Pelo comentário de @ dave_thompson_085, o AutoRunrecurso funcionará bem se você não quiser usar o /Kswitch. Se você configurou a chave do Registro corretamente, .cmdou .batnão precisa estar %AppData%, ela pode estar no mesmo local que já está.

Se você usar o %AppData%local, saiba que o cmd provavelmente procurará seu arquivo em lotes na pasta "Roaming" (em vez da raiz do AppData).

Mais informações sobre o AutoRunrecurso CMD: https://superuser.com/a/302553/333316

Coruscate5
fonte
Para que serve $ge $tpara quê?
@ Chinggis6 $ginsere um >, e $té um separador de comando.
Superole 25/08
@Superole ah ok, g reater de e t erminate, mas por que não usar >e &&personagens diretamente no alias doskey?
@ Chinggis6 porque isso quebraria o comando criando o alias. Em seguida, o interpretador de comandos assumirá que você quis dizer: primeiro execute doskey quit=doskey /historye salve a saída da criação da macro em um arquivo de log (nada ou uma mensagem de erro); próximo feche a janela (descartando tudo). -Você poderia escapar desses personagens com um em ^vez disso, eu acho. Como ^>^>e ^&(... e sim, você só precisa de um comercial)
Superole
11
Em vez de explícita /kpode usar AutoRun superuser.com/a/302553/333316
dave_thompson_085
2

Eu uso o cygwin . Ele também fornece outras funcionalidades que o Linux possui, mas o Windows não.

Harun
fonte