Eu tentaria a seguinte linha:
for %a in (.) do title %~na
Ou em um arquivo de lote você escaparia da %
s uma vez:
for %%a in (.) do title %%~na
O loop for...do
está lá apenas para colocar o caminho atual na variável, pois você não pode usar o operador ~
com variáveis de ambiente como ( %cd%
).
No entanto, como você notou, isso não funcionará para o "Prompt de Comando aqui", já que isso é executado antes que o diretório seja definido.
Para contornar isso, você basicamente terá que modificar a linha de comando sendo chamada sempre que usar essa funcionalidade.
Isso é controlado por duas variáveis no Registro, ambas sub chaves de HKEY_CLASSES_ROOT\Directory
:
HKEY_CLASSES_ROOT\Directory\shell\cmd\command
: Esta chave define o comando a ser executado quando você Shift + rightclick no ícone de diretório / pasta.
HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command
: Esta tecla define o comando a ser executado quando você muda + rightclick em algum lugar em uma janela aberta do Explorer.
Por padrão, ambos os valores padrão são definidos como cmd.exe /s /k pushd "%V"
, o que abrirá uma janela de comando e alterará o diretório para o parâmetro passado como %V
.
Para que isso funcione, você terá que editar esses dois valores padrão e anexar o comando acima, ligeiramente modificado. Basta definir os dois valores padrão para isso:
cmd.exe /s /k "pushd ""%V"" && for %%A in (%V) do @title %%~nA"
Observe as aspas duplas para escapá-las corretamente, já que tudo é colocado em um único par de aspas para agrupar tudo para o parâmetro% empo% de cmd.exe . O /k
irá esconder o comando de mostrar dentro da janela de comando.
Isso funciona para mim, mas há um pequeno detalhe envolvido: se o nome do diretório contiver mais de um ponto, como @
, isso nomeará o título one.two.three
apenas.
Lembre-se também de que o título não será atualizado quando o CD for para outro diretório. Fazer isso funcionar seria um pouco mais complicado (ou talvez até impossível; não tentei).