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

Jad*_*ias 65 windows path batch-file relative-path

我在同一文件夹a .bat和.exe文件中.除非我把完整的绝对路径放到它上面.exe,.bat否则我无法调用该文件.有没有办法不指定路径?

Pat*_*uff 140

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

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

~dp说得到驱动器和路径,包括尾随\.

  • 上面的Patrick Cuff的答案有效,但如果目录路径的一部分名称中有空格,则会失败.要解决此问题,您需要在.exe调用周围加上双引号."%〜dp0MyProgram.exe" (16认同)
  • +1投票刚刚在谷歌搜索中找到此链接 - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file.aspx (2认同)
  • 要添加到这个答案,如果您将执行路径更改为当前目录,如下所示:`cd"%~dp0"`您可以像这样调用MyProgram.exe (2认同)

Bru*_*uno 22

我通过在脚本开头使用pushd更改工作目录来解决这个问题,并使用popd在脚本结束时进行恢复.这样,您始终可以假定工作目录与bat文件的位置相同.

pushd %~dp0
ProgramInSameFolderAsBat.exe
popd
Run Code Online (Sandbox Code Playgroud)