Это можно сделать с помощью аргумента "0", отправляемого в пакетный файл (%0
), который на самом деле похож на %~dpnx0
или даже упрощен %~f0
.Что вам нужно, так это d rive letter и только p ath.Итак, вы можете попробовать:
command %~dp0file.ext
или даже намного более сложный (может не сработать, если command.ext
нет ни в PATH
, ни в %~dp0
):
pushd %cd%
cd %~dp0
command file.ext
popd
%~1
- расширяет %1
, удаляя все окружающие кавычки (")
%~f1
- расширяет %1
до полного имени пути
%~d1
- расширяет %1
дотолько буква диска
%~p1
- расширяется %1
только на путь
%~n1
- расширяется %1
только на имя файла
%~x1
- расширяется %1
только на расширение файла
%~s1
- расширенный путь содержит только короткие имена
%~a1
- расширяет %1
до атрибутов файла
%~t1
- расширяет %1
до даты / времени файла
%~z1
- расширяет %1
до размера файла
%~$PATH:1
- ищет каталоги, перечисленные в переменной окружения PATH
, и расширяет %1
до полностью
квалифицированного имени первого найденного.имя переменной среды
не определено или файл
не найден в результате поиска, тогда этот модификатор
расширяется до пустой строки
Модификаторы можно комбинировать для получения составных результатов:
%~dp1
- расширяет %1
до буквы диска и только пути
%~nx1
- расширяет %1
дотолько имя файла и расширение
%~dp$PATH:1
- выполняет поиск в каталогах, перечисленных в переменной среды PATH
для %1
, и расширяется до
буквы диска и пути к первому найденному.
%~ftza1
- расширяет %1
до DIR-подобной выходной линии
С call /?