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).