É possível obter o nome da pasta atual (não o caminho do diretório atual) usando um comando do DOS? Se sim, como?
O mais próximo que cheguei foi isso, mas não o faz:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
nota: a tentativa acima foi eu tentando tokenizar a string e obter o último token definido como a variável CURR.
windows
command-line
batch
djangofan
fonte
fonte
cd | sed "s/.*\\//"
(Isso direciona a saída do cd (cwd) para uma pesquisa de expressão regular e substitui, substituindo tudo antes do final \ com nada)for /f
nem o TomWij%~n*
são suportados no MS-DOS. (Windows'cmd.exe
é não DOS, que é um programa nativo do Windows.)Respostas:
A maneira mais curta que encontrei:
ou dentro de um script .bat:
ou em .bat com Get value na variável
Explicação: http://www.robvanderwoude.com/ntfor.php
nx significa apenas o nome e a extensão do arquivo
fonte
%
por%%
..
), como minha pasta% USERPROFILE%.*
usado com ele antes ooSe você quiser saber a localização atual do arquivo em lotes (e se o Windows não for uma versão muito antiga), digite
for /?
uma janela na 'caixa do DOS'. Rolar para baixo. Ler.Você descobrirá que agora pode ler (de dentro do arquivo em lotes) estas variáveis:
Isso funciona para muitos casos. Suponha que o batchfile seja chamado
mytest.bat
. Você pode chamá-lo de diferentes maneiras:..\..\to\mytest.bat
............................... (caminho relativo)d:\path\to\mytest.bat
........................... (caminho completo)\\fileserver\sharename\mytest.bat
... (caminho no compartilhamento remoto)... e você sempre obterá o valor certo em suas variáveis.
fonte
%~dpnx0
, não é?Eu pessoalmente gostei da resposta do Toms, até que ela lutou com pontos nos nomes dos dir. Isso me deu uma dica:
fonte
A resposta de Tom é boa, mas se você tiver um nome de diretório com um ponto final (por exemplo, wxwidgets-2.9.4), apenas o nome completo será obtido. Portanto, isso produziria o wxwidgets-2.9, porque o .4 foi tratado como uma extensão (Sim, mesmo que seja um nome de diretório!).
Para obter o nome completo da saída, você deve adicionar a extensão até o final:
e no modo de arquivo em lote:
Ou, é claro, defina uma variável no arquivo em lotes:
fonte
Uma outra maneira é:
trabalha com "." e espaços no nome do caminho
O que isso faz?
coloque o nome do arquivo inteiro (driveletter-path-filename-extension) no
MyPath
Varremover nome do arquivo e extensão de
MyPath
varTambém funciona com caminhos UNC. Se você precisar da barra invertida no final do caminho. Remova o
\
afterMyPath
no segundo comando set, por exemplo.fonte
%~dp0
Você pode obter o diretório atual em uma variável. Uma linha:
Verificar com
fonte
simples
ou
Cuidado com a barra invertida do final do caminho, pois não deve ser a barra invertida do fim.
fonte
Minha resposta neste tópico faz isso em 3 linhas simples:
fonte
Isso funciona para mim a partir de um arquivo em lotes. Retorna o nome do diretório de trabalho atual.
fonte