假设我有这些命令:
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 中执行,这不是我想要的。
假设我有这些命令:
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 中执行,这不是我想要的。
您可以使用 pushd/popd 命令(帮助pushd /?
)
Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
您可以将 cd 命令(帮助cd /?
)与%~dp0
批处理文件路径变量一起使用。
Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %~dp0
Prog3.exe
有关%~
修饰符的完整列表,请参阅call /?
或for /?
帮助。
但是,我仅添加此内容是为了在 Stack Overflow 上提供更完整的答案。我会推荐使用上面的 jeb 解决方案。
对我有用的是添加/d
:
cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit
(当我没有 时/d
,它不起作用。)