Cómo configurar el título de CMD al directorio de trabajo actual en Windows XP

18

¿Cómo se configura dinámicamente el título del símbolo del sistema (CMD) en Windows XP en el directorio de trabajo actual? Puedo usar

title %CD%

sin embargo, esta es una solución temporal y el título permanece fijo cuando cambio el directorio usando el comando CD.

Sombra tormenta
fuente
Bueno, ¿qué sucede cuando lo usas pushdcon una de las macros?
Hola71

Respuestas:

20

Lo hice funcionar gracias a la macro doskey de gravvity. Ha usado && para combinar los comandos de cd y título que funcionan perfectamente. Incluso hice que esta macro se cargara cada vez que uso cmd ajustando el registro.

1) Creé un archivo bat llamado cmd_title.bat y su contenido es

@echo off
title %cd%

2) Coloqué este archivo en la unidad C: (C: \ cmd_title.bat)

3) Cree otro archivo por lotes llamado cmd.bat en la unidad C: con el siguiente contenido

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

(el indicador / d es para usar cd para cambiar a otra unidad).

4) Luego abrimos regedit y vamos a HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Aquí hay una clave llamada AutoRun . Modificamos el valor de esta clave y la configuramos en la ubicación del archivo cmd.bat entre comillas (por ejemplo: "C: \ cmd.bat").

Ahora cd funciona como queremos cada vez que abrimos cmd.

Básicamente && se usa para encadenar comandos en Windows

Sombra tormenta
fuente
Genial, tengo tu solución para trabajar. Pero perdí mi funcionalidad de "presionar la tecla de tabulación, coincidencia automática".
rok2791SWTS
Es posible que haya alterado los valores de CompletionChar / PathCompletionChar en la clave HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor en el registro. Para configurar el uso de la tecla de tabulación para la finalización automática, debe establecer los valores CompletionChar y PathCompletionChar en 0x9 (hexadecimal)
Stormshadow
+1 es una solución funcional, pero con una corrección menor: AutoRun no es una clave, sino un valor de tipo de cadena.
mloskot
1
Buena solución! También podría hacerlo sin cmd_title.bat si en su lugar escribe la macro de esta manera:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole
1
Creo @echo offque no es necesario si solo agrega @frente a los comandos que no desea que se repitan. También encontré este comando más útil para establecer el título solo en el nombre del directorio actual en lugar de la ruta completa@for %%* in (.) do @title %%~nx*
Bron Davies,
5

Creo que pushd y popd son mucho más útiles que cd, y tendrían mucho más uso si fueran más rápidos de escribir. He resuelto los problemas de cd vs pushd / popd y el título del directorio de la ventana de la consola con el siguiente script, que llamo d.bat, que está en mi camino.

@ 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%
David McCracken
fuente
2

Puede cambiar el título del símbolo del sistema mediante el titlecomando.

Puede crear un archivo por lotes (digamos mycd.bat) que contenga:

title "%1"
cd  "%1"

y úsalo en lugar de "cd":

mycd "newdir"

También puede poner el archivo .bat en system32 si desea que siempre esté disponible.

harrymc
fuente
44
Usar macros sería una mejor opción:doskey cd=cd $* ^&^& title $*
user1686
@grawity: Buena idea.
harrymc
1

No puede, al menos no con el shell de Windows.


Que podría ser posible añadir "conjunto de títulos de Xterm" secuencias de escape a %PROMPT%, pero se necesitaría un emulador de terminal diferente (tal vez PuTTYcyg o algo de SFU), como la consola de Windows no admite secuencias de escape.

Alternativamente, encuentre otro shell que pueda usar las funciones de la consola de Windows para establecer títulos.


Estos a menudo se confunden en contextos de Windows, así que ...

shell lee e interpreta la entrada; cmd.exe` command.com`/bin/sh

terminal , emulador de terminal , consola muestra programas basados ​​en texto (incluido el shell) en su pantalla; Windows Console` xterm`PuTTYcyg

usuario1686
fuente
en realidad, cmd.exe es una terminal. El explorador es un caparazón.
Torre de
1
@Idigas: exploreres un shell de GUI, cmd.exeestá basado en texto. (Piense en esto: cmd.exees el equivalente exacto de /bin/shen Unix, y /bin/shsiempre que se denomina "la concha" Del mismo modo, la consola de Windows es equivalente a un "emulador de terminal" en X11..)
user1686
Estoy corregido.
Torre de
1

Suponiendo que \ tools está en el camino, y es donde guarda sus archivos por lotes:

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

Ahora tiene un cdtitle.batque puede llamar desde otro archivo por lotes.

Dave y
fuente
1

Cree un archivo: cd.bat y ponga lo siguiente allí:

cd %*  
title %CD%  

Luego emita este comando:

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

Reemplace "..." con la ruta a cd.bat. Pruébelo y vea que funciona.

Para hacer ese ish permanente, cree dosrc.cmd, coloque ese comando doskey allí, y luego cree un acceso directo de cmd, haga clic derecho sobre él y seleccione propiedades.

Modificar objetivo para que sea:

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

Nuevamente, reemplace "..." con la ruta a dosrc.cmd

Luego haga doble clic en el acceso directo, debe tener la funcionalidad de CD.

Mauro
fuente