У меня есть в той же папке файл .bat
и .exe
.
Я не мог вызывать файл .exe
из .bat
, если не поставить полный абсолютный путь к нему.
Есть ли способ не указывать путь?
Как выполнять программы в том же каталоге, что и пакетный файл Windows?
Ответ 1
Попробуйте вызвать .exe
с помощью %~dp0
, например: %~dp0MyProgram.exe
.
%0
содержит полный путь к вызываемому .bat
файлу.
~dp
говорит, чтобы получить диск и путь, включая trailing \
.
Ответ 2
Я решил это, изменив рабочий каталог, используя pushd в начале script, и восстановление находится в конце script используя popd. Таким образом, вы всегда можете предположить, что рабочий каталог совпадает с местоположением файла bat.
pushd %~dp0
ProgramInSameFolderAsBat.exe
popd
Ответ 3
кажется странным? Я никогда не работал над окнами, но
Пробовал ли вы с. /
./program.exe
действительно не должно быть разницы? возможно, летучая мышь выполняется из контекста C:\Windows или в какой-то момент ваша партия делает какой-либо диск в другом каталоге?