如何执行与Windowsbatch file相同的目录中的程序?

我在同一个文件夹中有一个.bat和一个.exe文件。 我不能从.bat调用.exe文件,除非我把完整的绝对path。 有没有办法不指定path?

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

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

~dp说要得到驱动器和path,包括尾随\

我通过在脚本开始处使用pushd来更改工作目录来解决这个问题,而使用popd来恢复脚本的末尾。 这样你总是可以假定工作目录和bat文件的位置是一样的。

 pushd %~dp0 ProgramInSameFolderAsBat.exe popd 

似乎很奇怪? 我有一段时间没有在Windows上工作,但是

你有没有试过带领./

./program.exe

真的应该没有区别? 也许蝙蝠是从C:\ Windows的上下文执行还是你的批处理在任何时候做任何CD到另一个目录?