Como consultar o nome do diretório atual em uma variável para arquivos em lote

Como consultar o nome do diretório atual em uma variável para arquivos em lote

Tenho pesquisado e tentado, sem sucesso, colocar o nome do diretório atual em uma variável, como %CurrDirNam%para criar um arquivo de texto com o mesmo nome de pasta, algo que o terceiro exemplo abaixo funciona, porém, quando executado, ele sobrescreve o arquivo existente e seu conteúdo, então modifiquei a linha inferior para verificar a existência do arquivo. Set DirName=%cd% For %%A in ("%dirname%") faça ( Set Name=%%~nxA ) SE NÃO EXISTIR %Name%.txt Echo %Dirname% > %DirName%\%Name%.txt Rem ---OOPS, desculpe, não sei como reformatar o código com CRLF e recuos. Sou novo nisso...

Responder1

Se você executar isso

Set DirName=%cd% 
Echo %Dirname% > %DirName%.txt

deC:\Temp, ele se expandirá para

Set DirName=C:\Temp 
Echo C:\Temp > C:\Temp.txt

Isso falhará se você não tiver permissões de gravação em C:\ e explicaria oAcesso negadomensagem que você recebe.

Se você deseja criar um arquivo em C:\Temp, use algo assim:

Set DirName=%cd% 
Echo %Dirname% > %DirName%\test.txt

Se o nome do arquivo corresponder ao nome do diretório, use este truque:

Set DirName=%cd%
For %%A in ("%dirname%") do (
    Set Name=%%~nxA
)
Echo %Dirname% > %DirName%\%Name%.txt

Responder2

Testei isso em meu sistema Windows 10 e funcionou sem problemas.

>path.txt echo %cd%

Executei isso em um script em lote enquanto estava no diretório do qual queria o caminho. No meu caso, eu só queria o caminho para criar uma URL a partir dele, descobri que ao usá-lo >url.txt echo %cd:\=/%também cuida de todas as barras invertidas que precisavam ser barras na URL e me poupou o problema

O único passo que resta é uma pequena edição no arquivo url.txt

informação relacionada