如何执行与windows批处理文件相同的目录中的程序?

如何执行与windows批处理文件相同的目录中的程序?

问题描述:

我在同一个文件夹中有一个.bat和一个.exe文件。 我无法拨打.bat中的.exe文件,除非我将完整的绝对路径指向它。 有没有办法不指定路径?如何执行与windows批处理文件相同的目录中的程序?

尝试拨打.exe%~dp0,如下所示:%~dp0MyProgram.exe

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

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

+2

+1票 刚刚在谷歌搜索 - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file上找到此链接。 aspx – house9 2010-04-28 15:17:54

+0

很好的解释,谢谢! – enderland 2013-01-22 22:36:33

+12

Patrick Cuff上面的答案是有效的,但如果目录路径的一部分名称中有空格,则会失败。为了解决这个问题,你需要在.exe调用中加双引号。 “%〜dp0MyProgram.exe” – 2013-02-05 17:50:49

似乎很奇怪?我没有工作在Windows上的某个时候,但

你尝试用./

./program.exe

确实应该是没有区别领先?也许蝙蝠是从C:\ Windows的上下文执行的,或者你的批处理是否在某个点执行了任何cd操作?

+0

你的意思是\(即反斜杠)。 – 2010-04-28 15:09:32

+0

我认为当我执行批处理时,它正从另一个目录执行。 – 2010-04-28 15:11:04

+1

也许我的问题是“如何双击一个批处理文件并使其在同一个目录下执行?” – 2010-04-28 15:11:45

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

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd