如何在与windows批处理文件相同的目录中执行程序?
Posted
技术标签:
【中文标题】如何在与windows批处理文件相同的目录中执行程序?【英文标题】:How to execute programs in the same directory as the windows batch file? 【发布时间】:2011-02-13 09:51:27 【问题描述】:我在同一个文件夹中有一个.bat
和一个.exe
文件。
我无法从.bat
调用.exe
文件,除非我输入完整的绝对路径。
有没有办法不指定路径?
【问题讨论】:
【参考方案1】:尝试使用%~dp0
调用.exe
,如下所示:%~dp0MyProgram.exe
。
%0
包含调用的.bat
文件的完整路径。
~dp
表示获取驱动器和路径,包括尾随\
。
【讨论】:
+1 投票刚刚在谷歌搜索中找到了这个链接 - weblogs.asp.net/whaggard/archive/2005/01/28/… Patrick Cuff 的上述回答有效,但如果目录路径的一部分名称中有空格,则会失败。要解决这个问题,您需要在 .exe 调用周围加上双引号。 "%~dp0MyProgram.exe" 谢谢,一直在寻找这个答案,没有什么比我的问题更有效或更适合我的问题! 要添加到这个答案,如果您将执行路径更改为当前目录,如下所示:cd "%~dp0"
您可以像这样调用 MyProgram.exe
非常感谢您的解释。【参考方案2】:
我通过在脚本开头使用pushd 更改工作目录并在脚本末尾使用popd 恢复来解决了这个问题。这样,您始终可以假定工作目录与 bat 文件的位置相同。
pushd %~dp0
ProgramInSameFolderAsBat.exe
popd
【讨论】:
请注意,更改工作目录可能会对执行的文件/脚本产生副作用。就我而言,我需要工作目录保持原样。考虑到这一点,@Patrick Cuff 的回答起作用了以上是关于如何在与windows批处理文件相同的目录中执行程序?的主要内容,如果未能解决你的问题,请参考以下文章
在与位于项目目录中的 .jar 文件相同的文件夹中创建一个文件
如何执行 perl 程序以及通过相同的 Windows 批处理文件给用户输入
在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]