如何在与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 文件相同的文件夹中创建一个文件

在与其他源 tcl 文件相同的目录中创建 tcl 包的问题

在与shell脚本相同的目录中创建文件夹[重复]

如何执行 perl 程序以及通过相同的 Windows 批处理文件给用户输入

在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]

PHP在与脚本相同的目录中创建文件