【问题标题】:How to set the working directory of a command in a Windows batch file?如何在 Windows 批处理文件中设置命令的工作目录?
【发布时间】:2012-03-24 17:11:53
【问题描述】:

假设我有这些命令:

Prog1.exe
D:\SomeDir\Prog2.exe
Prog3.exe

现在,假设第二行,我希望工作目录为 D:\SomeDir,但在 Prog1.exe 和 Prog3.exe 中,我想要默认工作目录(通常是我的 .bat 文件所在的位置)。如果我试试这个

Prog1.exe
cd D:\SomeDir
D:\SomeDir\Prog2.exe
Prog3.exe

显然Prog3会在SomeDir中执行,这不是我想要的。

【问题讨论】:

    标签: windows batch-file working-directory


    【解决方案1】:

    您可以使用 pushd/popd 命令(pushd /? 的帮助)

    Prog1.exe
    Pushd D:\SomeDir
    Prog2.exe
    popd
    Prog3.exe
    

    【讨论】:

      【解决方案2】:

      您可以使用带有%~dp0、批处理文件路径、变量的cd 命令(cd /? 的帮助)。

      Prog1.exe
      cd D:\SomeDir
      Prog2.exe
      cd %~dp0
      Prog3.exe
      

      有关%~ 修饰符的完整列表,请参阅call /?for /? 帮助。

      但是,我添加这个只是为了在 Stack Overflow 上提供更完整的答案。我会推荐使用上面 jeb 的解决方案。

      【讨论】:

        【解决方案3】:

        对我有用的是添加/d

        cd /d C:\nginx
        ECHO Stopping nginx...
        start nginx -s quit
        

        (当我没有/d 时,它不起作用。)

        https://stackoverflow.com/a/18310141/470749 试图解释它。

        【讨论】:

        • /d 是什么意思?
        • @СеменихинМаксим,来自文档:“除了更改驱动器的当前目录外,使用 /D 开关更改当前驱动器。”基本上,您总是希望在将 dir 更改为任意绝对路径时指定它。
        猜你喜欢
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 2015-01-21
        • 2016-12-05
        • 2015-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多