これらのコマンドがあるとしましょう:
Prog1.exe
D:\SomeDir\Prog2.exe
Prog3.exe
2行目では、作業ディレクトリを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
のヘルプ)を使用できます。
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
がなかったときは、機能しませんでした。)
https://stackoverflow.com/a/18310141/470749 はそれを説明しようとします。