Как выполнять программы в том же каталоге, что и пакетный файл Windows?

У меня есть в той же папке файл .bat и .exe. Я не мог вызывать файл .exe из .bat, если не поставить полный абсолютный путь к нему. Есть ли способ не указывать путь?

Ответ 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 или в какой-то момент ваша партия делает какой-либо диск в другом каталоге?