Как установить рабочий каталог команды в командном файле Windows? - PullRequest
36 голосов
/ 07 марта 2012

Допустим, у меня есть эти команды:

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 ]

59 голосов
/ 07 марта 2012

Вы можете использовать команды pushd / popd (справка по pushd /?)

Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
11 голосов
/ 06 декабря 2012

Вы можете использовать команду cd (справку по cd /?) с %0, путем к пакетному файлу, переменной.

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

Полный список модификаторов %0 см. В справке call /? или for /?.

Однако я добавляю это только для того, чтобы дать более полный ответ о переполнении стека. Я РЕКОМЕНДУЮ использовать вышеуказанное решение Джеба.

7 голосов
/ 11 мая 2014

Что сработало для меня, так это добавление /d:

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

(Когда у меня не было /d, оно не работало.)

https://stackoverflow.com/a/18310141/470749 пытается объяснить это.

...