Я новичок в сценариях Windows, и у меня есть абсолютный путь, как- /bin/debug/test/abc.xyz.dll
/bin/debug/test/
и я хочу удалить имя файла и получить только путь, как вывод: /bin /debug /test /.
Как мне это сделать?
Для этого вы можете использовать расширенные возможности цикла FOR
- даже если он не будет "зацикливаться":
@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA
где вы вызываете этот скрипт с полным именем файла, возможно, в кавычках для защиты пробелов внутри.
редактировать: мой оригинальный код использовал echo %%~nxA
что явно было неправильно, извините. Он изолирует имя файла от пути и возвращает имя файла. Приведенный выше код теперь возвращает только путь (без буквы диска).
edit2: я благодарен @Karan за указание, что это может быть сокращено до
@echo off
setlocal EnableExtensions
echo %~p1
потому что расширенный синтаксис расширения переменных доступен не только в циклах FOR
но и с расширением аргументов (см. CALL /?).