Como definir o título do CMD para o diretório de trabalho atual no Windows XP

18

Como se define dinamicamente o título do prompt de comando (CMD) no Windows XP para o diretório de trabalho atual? Eu posso usar

title %CD%

no entanto, essa é uma correção temporária e o título permanece fixo quando eu mudo de diretório usando o comando CD.

Stormshadow
fonte
Bem, o que acontece quando você usa pushduma das macros?
Hello71

Respostas:

20

Conseguiu funcionar graças à macro doskey da gravidade. Ele usou o && para combinar os comandos cd e title, que funcionam perfeitamente. Eu até fiz essa macro carregar toda vez que uso o cmd ajustando o registro.

1) Criei um arquivo bat chamado cmd_title.bat e seu conteúdo é

@echo off
title %cd%

2) Coloquei este arquivo na unidade C: (C: \ cmd_title.bat)

3) Crie outro arquivo em lotes chamado cmd.bat na unidade C: com o seguinte conteúdo

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

(o sinalizador / d é para usar cd para mudar para outra unidade).

4) Em seguida, abrimos o regedit e vamos para HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Aqui há uma chave chamada AutoRun . Nós modificamos o valor dessa chave e o definimos no local do arquivo cmd.bat entre aspas (por exemplo: "C: \ cmd.bat").

Agora o cd funciona como queremos toda vez que abrimos o cmd.

Basicamente, o&& é usado para encadear comandos no Windows

Stormshadow
fonte
Legal, consegui sua solução para o trabalho. Mas eu perdi minha funcionalidade "tecla da guia hit, correspondência automática".
precisa saber é o seguinte
Você pode ter perturbado os valores CompletionChar / PathCompletionChar na chave HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor no registro. Para definir o uso da tecla tab para o preenchimento automático, você precisa definir os valores CompletionChar e PathCompletionChar para 0x9 (hex)
Stormshadow
+1 é uma solução funcional, mas com pequenas correções: o AutoRun não é uma chave, mas o valor do tipo de string.
amigos estão dizendo sobre mloskot
11
Ótima solução! Você também pode fazê-lo sem o cmd_title.bat se, em vez disso, digitar a macro assim:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole
11
Acho que @echo offnão é necessário se você apenas adicionar @na frente dos comandos que você não deseja que ecoem. Eu também achei este comando mais útil para definir o título para apenas o nome do diretório atual em vez do caminho completo@for %%* in (.) do @title %%~nx*
Bron Davies
5

Eu acho que pushd e popd são muito mais úteis que o cd, e seriam muito mais úteis se fossem mais rápidos de digitar. Resolvi os problemas do cd vs. pushd / popd e do título do diretório da janela do console com o seguinte script, que chamo de d.bat, que está no meu caminho.

@ 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
fonte
2

Você pode alterar o título do prompt de titlecomando usando o comando

Você pode criar um arquivo em lotes (por exemplo, mycd.bat) contendo:

title "%1"
cd  "%1"

e use-o em vez de "cd":

mycd "newdir"

Você também pode colocar o arquivo .bat no system32, se desejar que ele esteja sempre disponível.

harrymc
fonte
4
Usando macros seria uma opção melhor:doskey cd=cd $* ^&^& title $*
grawity
@ grrawity: Boa ideia.
harrymc
1

Você não pode, pelo menos não com o shell do Windows.


Ele pode ser possível adicionar "set título Xterm" sequências de escape para %PROMPT%, mas você precisaria de um emulador diferente terminal (talvez PuTTYcyg ou algo do SFU), como Console do Windows não suporta sequências de escape.

Como alternativa, encontre outro shell que possa usar as funções do console do Windows para definir títulos.


Estes são freqüentemente confundidos em contextos do Windows, então ...

shell lê e interpreta a entrada; cmd.exe, command.com,/bin/sh

terminal , emulador de terminal , console exibe programas baseados em texto (incluindo o shell) na tela; Windows Console, xterm,PuTTYcyg

gravidade
fonte
na verdade, o cmd.exe é um terminal. Explorer é um shell.
Rook
11
@Idigas: exploreré um shell de GUI, cmd.exeé um baseado em texto. (Pense nisso: cmd.exeé o equivalente exato de /bin/shem Unix, e /bin/shé sempre chamado de "shell" Da mesma forma, o console do Windows é equivalente a um "emulador de terminal" no X11..)
grawity
Eu estou corrigido.
Rook
1

Supondo que \ tools está no caminho e é onde você mantém seus arquivos em lote:

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

Agora você tem um cdtitle.batque pode chamar de outro arquivo em lotes.

daveand
fonte
1

Crie um arquivo: cd.bat e coloque o seguinte:

cd %*  
title %CD%  

Em seguida, emita este comando:

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

Substitua "..." pelo caminho para cd.bat. Experimente e veja se funciona.

Para tornar esse ish permanente, crie o dosrc.cmd, insira o comando doskey e crie um atalho de cmd, clique com o botão direito do mouse e selecione propriedades.

Modifique o destino para:

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

Mais uma vez, substitua "..." pelo caminho para dosrc.cmd

Em seguida, clique duas vezes no atalho, você deve ter a funcionalidade do CD.

Mauro
fonte