Я новичок в скриптах 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
циклах, но и срасширение аргументаа также (см. ВЫЗОВ /?).