Подтвердить что ты не робот

Как установить рабочий каталог команды в пакетном файле Windows?

Скажем, у меня есть следующие команды:

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, что не то, что я хочу.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

fooobar.com/info/35431/... пытается объяснить это.