如何在Windows批处理文件中设置命令的工作目录?

时间:2012-03-07 06:51:12

标签: windows batch-file working-directory

假设我有这些命令:

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中执行,这不是我想要的。

3 个答案:

答案 0 :(得分:58)

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

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

答案 1 :(得分:11)

你可以使用cd命令(帮助cd /?)和%0,bat文件路径,变量。

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

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

但是,我只是添加了这个,以便在Stack Overflow上提供更完整的答案。我建议使用上面的jeb解决方案。

答案 2 :(得分:7)

对我有用的是添加/d

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

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

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