Ответ 1
Вы можете использовать команды pushd/popd (помощь с pushd /?
)
Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
Скажем, у меня есть следующие команды:
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
, %~dp0
пакетному файлу, переменной.
Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %~dp0
Prog3.exe
Полный список модификаторов %~
смотрите в call/?
или for/?
Помогите.
Однако я добавляю это только для того, чтобы дать более полный ответ о переполнении стека. Я РЕКОМЕНДУЮ, используя решение Jeb выше.
Что сработало для меня, это добавить /d
:
cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit
(Когда у меня не было /d
, это не сработало.)
fooobar.com/info/35431/... пытается объяснить это.