如何在Windows批处理文件所在的目录中执行程序?


Answers:


160

尝试调用.exewith %~dp0,如下所示:%~dp0MyProgram.exe

%0包含被调用.bat文件的完整路径。

~dp说获得驱动力和路径,包括拖尾\


2
+1投票刚发现在谷歌搜索这个链接- weblogs.asp.net/whaggard/archive/2005/01/28/...
house9

21
帕特里克·库夫(Patrick Cuff)的上述解答有效,但如果部分目录路径的名称中包含空格,则失败。要解决此问题,您需要在.exe调用两边加上双引号。“%〜dp0MyProgram.exe”
Stephen Cernota

谢谢,一段时间以来一直在寻找这个答案,没有什么比我的问题有效或合适的了!
MD XF

2
要添加到此答案中,如果您将执行路径更改为当前目录,如下所示:cd "%~dp0"您可以像这样调用MyProgram.exe
Thomas Mulder

非常感谢您的解释。
塔雷克

26

我通过在脚本的开头使用push更改工作目录并在脚本的末尾使用popd来恢复工作目录来解决此问题。这样,您始终可以假定工作目录与bat文件的位置相同。

pushd %~dp0
ProgramInSameFolderAsBat.exe
popd

1
请注意,更改工作目录可能会在执行的文件/脚本中产生副作用。就我而言,我需要工作目录保持原样。@Patrick Cuff的回答考虑到了这一点
Bilal Akil
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.