Удалить подстроку из абсолютного пути скрипта Windows

Удалить подстроку из абсолютного пути скрипта Windows

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

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

решение1

FORДля этого можно использовать расширенные возможности цикла — даже если он не будет «цикличным»:

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

где вы вызываете этот скрипт, используя полное имя файла, возможно, заключенное в кавычки для защиты пробелов внутри.

редактировать: Мой оригинальный код echo %%~nxA, который явно был неправильным, извините. Он изолирует имя файла от пути и возвращает имя файла. Код выше теперь возвращает только путь (без буквы диска).

правка2: Я благодарен @Karan за то, что он указал на то, что это можно сократить до

@echo off
setlocal EnableExtensions
echo %~p1

поскольку расширенный синтаксис расширения переменной доступен не только в FORциклах, но и срасширение аргументаа также (см. ВЫЗОВ /?).

Связанный контент