Eu sou novo em scripts do Windows e tenho o caminho absoluto como- /bin/debug/test/abc.xyz.dll
e 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 FOR
loop 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 %%~nxA
estava 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 FOR
loops, mas comexpansão de argumentotambém (veja CALL /?).