Comment définir le titre du CMD sur le répertoire de travail actuel dans Windows XP


18

Comment définir dynamiquement le titre de l'invite de commande (CMD) dans Windows XP dans le répertoire de travail actuel? je peux utiliser

title %CD%

cependant, il s'agit d'un correctif temporaire et le titre reste fixe lorsque je change de répertoire à l'aide de la commande CD.


Eh bien, que se passe-t-il lorsque vous utilisez pushdune des macros?
Hello71

Réponses:


20

Je l'ai fait fonctionner grâce à la macro doskey de gravvity. Il a utilisé && pour combiner les commandes cd et title qui fonctionnent parfaitement. J'ai même fait cette charge de macro chaque fois que j'utilise cmd en ajustant le registre.

1) J'ai créé un fichier bat appelé cmd_title.bat et son contenu est

@echo off
title %cd%

2) J'ai placé ce fichier dans le lecteur C: (C: \ cmd_title.bat)

3) Créez un autre fichier de commandes appelé cmd.bat dans le lecteur C: avec le contenu suivant

doskey cd = cd /d $* ^&^& "C:\cmd_title.bat"
title %cd%

(l'indicateur / d sert à utiliser cd pour basculer vers un autre lecteur).

4) Ensuite, nous ouvrons regedit et accédons à HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Ici, il y a une clé appelée AutoRun . Nous modifions la valeur de cette clé et la définissons à l'emplacement du fichier cmd.bat entre guillemets (par exemple: "C: \ cmd.bat").

Maintenant, cd fonctionne comme nous le voulons chaque fois que nous ouvrons cmd.

Fondamentalement, && est utilisé pour le chaînage de commandes dans Windows


Cool, j'ai fait fonctionner ta solution. Mais j'ai perdu ma fonctionnalité "touche de tabulation, correspondance automatique".
rok2791SWTS

Vous avez peut-être perturbé les valeurs CompletionChar / PathCompletionChar dans la clé HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor du Registre. Pour définir, utilisez la touche de tabulation pour l'auto-complétion, vous devez définir les valeurs CompletionChar et PathCompletionChar sur 0x9 (hex)
Stormshadow

+1 c'est une solution qui fonctionne, mais avec une correction mineure: AutoRun n'est pas une clé, mais la valeur du type de chaîne.
mloskot

1
Bonne solution! Vous pouvez également le faire sans cmd_title.bat si vous tapez la macro comme ceci à la place:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole

1
Je trouve que ce @echo offn'est pas nécessaire si vous ajoutez juste @devant les commandes que vous ne voulez pas faire écho. J'ai également trouvé cette commande plus utile pour définir le titre sur le nom du répertoire actuel plutôt que sur le chemin complet@for %%* in (.) do @title %%~nx*
Bron Davies

5

Je pense que pushd et popd sont beaucoup plus utiles que cd, et seraient beaucoup plus utiles s'ils étaient plus rapides à taper. J'ai résolu les problèmes de cd vs pushd / popd et le titre du répertoire de la fenêtre de la console avec le script suivant, que j'appelle d.bat, qui se trouve sur mon chemin.

@ echo off
rem d.bat replaces CD, PUSHD, and POPD with one command that also changes the title
rem of the console window to tell the current directory. Invoked with no arg, the
rem title is updated. Use this after changing the directory by some other means.
rem The argument / invokes popd. Any other argument invokes pushd with that arg.

if not _%1 == _ ( 
    if _%1 == _/ (
        popd
    ) else (
        pushd %*
    )
)
title %CD%

2

Vous pouvez modifier le titre de l'invite de titlecommandes à l'aide de la commande.

Vous pouvez créer un fichier batch (disons mycd.bat) contenant:

title "%1"
cd  "%1"

et utilisez-le à la place de "cd":

mycd "newdir"

Vous pouvez également placer le fichier .bat dans system32 si vous souhaitez qu'il soit toujours disponible.


4
Utiliser des macros serait une meilleure option:doskey cd=cd $* ^&^& title $*
user1686

@grawity: Bonne idée.
harrymc

1

Vous ne pouvez pas, du moins pas avec le shell Windows.


Il pourrait être possible d'ajouter des séquences d'échappement "set Xterm title" %PROMPT%, mais vous auriez besoin d'un émulateur de terminal différent (peut-être PuTTYcyg ou quelque chose de SfU), car la console Windows ne prend pas en charge les séquences d'échappement.

Vous pouvez également trouver un autre shell qui peut utiliser les fonctions de la console Windows pour définir des titres.


Ceux-ci sont souvent confondus dans les contextes Windows, donc ...

shell lit et interprète les entrées; cmd.exe, command.com,/bin/sh

terminal , émulateur de terminal , console affiche des programmes textuels (y compris le shell) sur votre écran; Windows Console, xterm,PuTTYcyg


en fait, cmd.exe est un terminal. explorer est un shell.
Tour

1
@Idigas: explorerest un shell GUI, cmd.exeest un texte. (Pensez-y: cmd.exeest l'équivalent exact de /bin/shsous Unix, et /bin/shest toujours appelé "le shell". De même, la console Windows est équivalente à un "émulateur de terminal" dans X11.)
user1686

Je me suis trompé.
Tour

1

En supposant que \ tools se trouve dans le chemin, et c'est là que vous conservez vos fichiers de commandes:

copy con: \tools\titlecmd.txt

title ^Z

copy con: \tools\cdtitle.bat

cd>\tools\cd.txt

copy \tools\titlecmd.txt+\tools\cd.txt cdtitletmp.bat

call cdtitletmp

^Z

Vous avez maintenant un cdtitle.batque vous pouvez appeler à partir d'un autre fichier de commandes.


1

Créez un fichier: cd.bat et insérez-y les éléments suivants:

cd %*  
title %CD%  

Exécutez ensuite cette commande:

doskey cd=...\cd.bat $*  

Remplacez "..." par le chemin d'accès à cd.bat. Essayez-le et voyez que cela fonctionne.

Pour rendre cette image permanente, créez dosrc.cmd, placez cette commande doskey dedans, puis créez un raccourci cmd, faites un clic droit dessus et sélectionnez les propriétés.

Modifier la cible pour qu'elle soit:

%windir%\system32\cmd.exe /K ...\dosrc.cmd  

Encore une fois, remplacez "..." par le chemin d'accès à dosrc.cmd

Ensuite, double-cliquez sur le raccourci, vous devriez avoir la fonctionnalité cd.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.