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

Lou*_*hys 40 windows batch-file working-directory

假设我有这些命令:

Prog1.exe
D:\SomeDir\Prog2.exe
Prog3.exe
Run Code Online (Sandbox Code Playgroud)

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

Prog1.exe
cd D:\SomeDir
D:\SomeDir\Prog2.exe
Prog3.exe
Run Code Online (Sandbox Code Playgroud)

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

jeb*_*jeb 65

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

Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
Run Code Online (Sandbox Code Playgroud)


Dav*_*ann 11

你可以使用cd命令(help with cd /?)和%0,bat文件路径,变量.

Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %~dp0
Prog3.exe
Run Code Online (Sandbox Code Playgroud)

有关%0修饰符的完整列表,请参阅%~dp0%~帮助.

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


Rya*_*yan 8

对我有用的是增加一个/d:

cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit
Run Code Online (Sandbox Code Playgroud)

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

/sf/answers/1281709901/尝试解释它.

  • @СеменихинМаксим,来自文档:"除了更改驱动器的当前目录外,还可以使用/ D开关更改当前驱动器." 基本上,您总是希望在将dir更改为任意绝对路径时指定它. (5认同)
  • / d是什么意思? (3认同)