¿Mantener el historial de comandos cmd.exe entre sesiones?

75

¿Hay alguna manera de mantener el historial de comandos de cmd entre sesiones?

fusión de fuego
fuente

Respuestas:

22

Cambie a usar PowerShell y siga las instrucciones en el siguiente sitio para habilitar el historial:

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

Alternativamente, en cmd.exe, puede usar "doskey / history" al final de su sesión para mostrar lo que escribió en esa sesión, pero no hay forma de cargarlo realmente en la próxima sesión.

Hippy
fuente
66
Pensé en hacer +1 en esto porque "Cambiar a usar PowerShell" no es necesariamente tan fácil como parece, dependiendo del tipo de cosas para las que está usando la consola, pero la información es precisa muuuuuuuuuy;)
Shinrai
2
Convenido. Dudé en dejarlo, pero es la única respuesta real que puedo encontrar. Traté de obtener algo similar en una estación de trabajo que tenía antes, pero simplemente no hay un mecanismo de historial persistente disponible para cmd.exe :-(
Hyppy
Tenga en cuenta que esto mantendrá una lista de los comandos que escribió, pero NO altera la lista de comandos que aparecerán cuando presione la tecla arriba del teclado. No afecta a la funcionalidad "doskey", en otras palabras.
Marcar el
Debe tenerse en cuenta que algunos comandos que funcionan en cmd no funcionan de la misma manera en PowerShell, por ejemplo, mvn install `-Dmaven.test.skip = true requeriría un retroceso como se muestra antes del guión
Drenai
62

He encontrado 2 formas, ninguna de las cuales requiere cambiar a PowerShell.

  1. Instale Clink , que mejora cmd.execon un historial persistente y mucho más. Simplemente instálelo y luego ábralo cmdnormalmente.

  2. Instale la versión gratuita de TCC / LE , que es un programa separado, nuevamente proporcionando una versión mejorada de cmd.exe.

gorrión
fuente
55
Estoy un poco aprensivo contra el reemplazo de todo el sistema, cmd.exepero es una buena respuesta, y clink también admite un modo de inyección.
Lorenz Lo Sauer
44
Wow, Clink es fantástico.
Chris Weber
44
Clink es brillante. Reemplazado cmdcon él, no ha habido problemas, muy feliz con él.
Coronel Panic
2
¡Clink es asombroso!
Hoang Huynh
3
Esta debería ser la respuesta aceptada. Porque esto es lo que preguntó la pregunta .. !! Esto es mejor en lugar de usar cualquier otra aplicación alternativa.
Samitha Chathuranga
12

Guardar el historial es un pequeño flujo de trabajo: aquí hay una forma menos "pesada" de hacer esto (sin libs externas).

Cree un archivo bat / cmd para configurar su historial, en este caso lo llamé 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

Luego ejecute esto desde "Inicio-> Ejecutar" (también puede configurar un alias para esto también):

cmd.exe /K C:\MyEnvironment.cmd

Cada vez que cierro una sesión, presiono "salir", o si tengo miedo de perder el historial a mitad de la sesión, presiono "guardar". Si quiero buscar algo en la historia, simplemente presiono "PALABRA CLAVE de la historia".


Según el comentario de @ dave_thompson_085, la AutoRunfunción funciona bien si no desea utilizar el /Kinterruptor. Si configura la clave del Registro correctamente, .cmdo .batno necesita estar en %AppData%, puede estar en la misma ubicación que ya está.

Si utiliza la %AppData%ubicación, tenga en cuenta que cmd probablemente buscará su archivo por lotes en la carpeta "Roaming" (en lugar de la raíz de AppData).

Más información sobre la AutoRunfunción CMD: https://superuser.com/a/302553/333316

Coruscate5
fuente
¿Para qué $gy $tpara qué?
@ Chinggis6 $ginserta un >, y $tes un separador de comandos.
Superole
@Superole ah ok, g reater than and t erminate, pero ¿por qué no usar >y &&caracteres directamente en el alias de doskey?
@ Chinggis6 porque eso rompería el comando creando el alias. Luego, el intérprete de comandos supondría que usted quiso decir: primero ejecute doskey quit=doskey /historyy guarde la salida de la creación de macro en un archivo de registro (ya sea nada o un mensaje de error); luego cierre la ventana (descartando todo). -Puedes escapar de esos personajes con un ^lugar, creo. Me gusta ^>^>y ^&(... y sí, solo necesitas un ampersand)
Superole
1
En lugar de explícita /kpuede utilizar AutoRun superuser.com/a/302553/333316
dave_thompson_085
2

Yo uso cygwin . También proporciona algunas otras funcionalidades que Linux tiene pero Windows no.

Harun
fuente