【问题标题】:How to execute programs in the same directory as the windows batch file?如何在与windows批处理文件相同的目录中执行程序?
【发布时间】:2011-02-13 09:51:27
【问题描述】:

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

【问题讨论】:

    标签: windows batch-file path relative-path


    【解决方案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 的回答起作用了
    猜你喜欢
    • 2019-11-06
    • 2018-07-30
    • 2012-07-28
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多