Я новичок в сценариях Windows, и у меня есть абсолютный путь, как- /bin/debug/test/abc.xyz.dll /bin/debug/test/ и я хочу удалить имя файла и получить только путь, как вывод: /bin /debug /test /.

Как мне это сделать?

1 ответ1

1

Для этого вы можете использовать расширенные возможности цикла 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 /?).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .