У меня в той же папке .bat
и файл .exe
. Я не мог назвать файл .exe
с .bat
, если только не поставлю полный абсолютный путь к нему. Есть ли способ не указывать путь?Как выполнить программы в том же каталоге, что и пакетный файл Windows?
ответ
Попробуйте позвонить .exe
с помощью %~dp0
, например: %~dp0MyProgram.exe
.
%0
содержит полный путь к названному файлу .bat
.
~dp
говорит, чтобы получить привод и путь, включая завершение \
.
кажется странным? Я не работал на окнах на некоторое время, но
вы пытались ведущий с ./
./program.exe
действительно должно быть никакой разницы? может быть, летучая мышь выполняется из контекста C: \ Windows или в какой-то момент ваша партия делает какой-либо диск в другом каталоге?
Вы имели в виду. \ (То есть обратная косая черта). –
Я думаю, что когда я исполняю пакет, он выполняется из другого каталога. –
Возможно, мой вопрос: «Как дважды щелкнуть пакетный файл и сделать его выполненным в том же каталоге, что и он?» –
+1 голос только что нашел эту ссылку в поиске Google - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file. aspx – house9
Хорошее объяснение, спасибо! – enderland
Ответ Патрика Каффа выше работает, но не удается, если часть пути к каталогу содержит пробелы в своем имени. Чтобы обойти это, вам нужно поставить двойные кавычки вокруг вызова .exe. "% ~ dp0MyProgram.exe" –