Conserver l'historique des commandes cmd.exe entre les sessions?

75

Existe-t-il un moyen de conserver l'historique des commandes cmd entre les sessions?

perfusion de feu
la source

Réponses:

22

Passez à l’utilisation de PowerShell et suivez les instructions du site suivant pour activer l’historique:

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

Alternativement, dans cmd.exe, vous pouvez utiliser "doskey / history" à la fin de votre session pour montrer ce que vous avez tapé dans cette session, mais il n'y a aucun moyen de le charger réellement dans la session suivante.

Hyppy
la source
6
J’ai hésité à utiliser +1 car "Passer à l’utilisation de PowerShell" n’est pas forcément aussi simple que cela
puisse paraître
2
D'accord. J’ai hésité à le poser mais c’est la seule vraie réponse que je puisse trouver. J'ai essayé d'obtenir quelque chose de similaire sur un poste de travail que j'avais auparavant, mais il n'y a tout simplement pas de mécanisme d'historique persistant disponible pour cmd.exe :-(
Hyppy
Notez que ceci gardera une liste des commandes que vous avez tapées, mais cela ne modifiera PAS la liste des commandes qui apparaîtront lorsque vous appuierez sur la touche haut du clavier. Cela n'affecte pas la fonctionnalité "doskey", en d'autres termes.
Marc
Il convient de noter que certaines commandes qui fonctionnent dans cmd ne fonctionnent pas de la même manière dans PowerShell, par exemple, mvn install `-Dmaven.test.skip = true nécessiterait un backtick, comme indiqué avant le tiret
Drenai le
62

J'ai trouvé deux méthodes, dont aucune ne nécessite de passer à PowerShell.

  1. Installez Clink , qui s'améliore cmd.exeavec l'historique persistant et bien plus encore. Installez-le et ouvrez- cmdle normalement.

  2. Installez la version gratuite de TCC / LE , qui est un programme séparé, fournissant à nouveau une version améliorée de cmd.exe.

Sparrowt
la source
5
Je crains un peu le remplacement de l’ensemble du système, cmd.exemais c’est une bonne réponse et clink prend également en charge un mode d’injection.
Lorenz Lo Sauer le
4
Wow, Clink est fantastique.
Chris Weber
4
Clink est génial. Remplacé cmdpar cela, pas eu de problèmes, très heureux avec cela.
colonel Panic
2
Clink est incroyable!
Hoang Huynh
3
Cela devrait être la réponse acceptée. Parce que c'est ce que demande la question .. !! Ceci est préférable plutôt que d'utiliser toute autre application alternative.
Samitha Chathuranga
12

L'enregistrement de l'historique est un petit flux de travail - voici une façon moins "lourde" de le faire (pas de bibliothèque externe).

Créez un fichier bat / cmd pour configurer votre historique. Dans ce cas, je l'ai appelé 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

Ensuite, lancez ceci depuis "Démarrer-> Exécuter" (vous pouvez aussi configurer un alias pour cela aussi):

cmd.exe /K C:\MyEnvironment.cmd

Chaque fois que je ferme une session, je clique sur "Quitter" - ou, si j'ai peur de perdre mon historique en milieu de session, je clique sur "Enregistrer". Si je veux rechercher quelque chose dans l’histoire, je clique simplement sur «KEYWORD».


D'après le commentaire de @ dave_thompson_085, cette AutoRunfonctionnalité fonctionne bien si vous ne souhaitez pas utiliser le /Kcommutateur. Si vous configurez correctement la clé de Registre, le .cmdou .batn'a pas besoin d'être %AppData%, il peut être au même endroit , il est déjà.

Si vous utilisez cet %AppData%emplacement, sachez que cmd recherchera probablement votre fichier de commandes dans le dossier "Roaming" (au lieu de la racine AppData).

Plus d'informations sur la AutoRunfonctionnalité CMD: https://superuser.com/a/302553/333316

Coruscate5
la source
Qu'est - ce $get $tsont pour?
@ Chinggis6 $ginsère un >, et $test un séparateur de commandes.
Superole
Ah ok @Superole, g rand que et t erminate, mais pourquoi ne pas utiliser >et &&caractères directement dans l'alias doskey?
@ Chinggis6 car cela romprait la commande créant l'alias. Ensuite, l'interpréteur de commande supposerait que vous vouliez dire: d'abord, exécutez doskey quit=doskey /historyet enregistrez le résultat de la création de la macro dans un fichier journal (soit rien, soit un message d'erreur); Ensuite, fermez la fenêtre (en jetant tout). -Vous pouvez échapper à ces personnages avec un ^, cependant, je pense. Comme ^>^>et ^&(... et oui, vous n'avez besoin que d'une esperluette)
Superole
1
Au lieu d'explicite, vous /kpouvez utiliser AutoRun superuser.com/a/302553/333316
dave_thompson_085 le
2

J'utilise cygwin . Il fournit également d'autres fonctionnalités que Linux mais Windows non.

Harun
la source