Как установить рабочий каталог команды в пакетном файле Windows?
скажем, у меня есть следующие команды:
Prog1.exe
D:SomeDirProg2.exe
Prog3.exe
теперь, скажем, для второй строки, я хотел бы, чтобы рабочий каталог был D:SomeDir, но в Prog1.exe и Prog3.exe я хочу рабочий каталог по умолчанию (обычно, где мой .bat файл). Если я попробую это
Prog1.exe
cd D:SomeDir
D:SomeDirProg2.exe
Prog3.exe
по-видимому, Prog3 будет выполнен в SomeDir, что не то, что я хочу.
3 ответов
вы можете использовать команды pushd/popd (справка с pushd /?
)
Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
вы можете использовать команду cd (help with cd /?
) с переменной %0, путь к файлу bat.
Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %dp0
Prog3.exe
полный список модификаторов %0 см. В разделе call /?
или for /?
помочь.
однако я только добавляю это, чтобы предоставить более полный ответ на переполнение стека. Я бы рекомендовал использовать решение джеба выше.
что сработало для меня, это добавление /d
:
cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit
(когда у меня не было /d
, это не сработало.)
https://stackoverflow.com/a/18310141/470749 пытается объяснить это.