Remover substring do script do Windows do caminho absoluto

Remover substring do script do Windows do caminho absoluto

Eu sou novo em scripts do Windows e tenho o caminho absoluto como- /bin/debug/test/abc.xyz.dlle quero remover o nome do arquivo e obter apenas o caminho como saída: /bin/debug/test/.

Como devo fazer isso?

Responder1

Você pode usar os recursos estendidos de um FORloop para isso - mesmo que ele não faça "loop":

@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA

onde você chama esse script com o nome completo do arquivo, possivelmente citado para proteger os espaços internos.

editar: Meu código original usado echo %%~nxAestava claramente errado, desculpe. Ele isola o nome do arquivo do caminho e retorna o nome do arquivo. O código acima agora retorna apenas o caminho (sem a letra da unidade).

editar2: Sou grato a @Karan por apontar que isso pode ser abreviado para

@echo off
setlocal EnableExtensions
echo %~p1

porque a sintaxe de expansão de variável estendida está disponível não apenas em FORloops, mas comexpansão de argumentotambém (veja CALL /?).

informação relacionada