web-dev-qa-db-ja.com

Windowsバッチファイルでコマンドの作業ディレクトリを設定する方法

これらのコマンドがあるとしましょう:

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で実行されますが、これは私が望むものではありません。

37
Louis Rhys

Pushd/popdコマンドを使用できます(pushd /?

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

cd /?、バッチファイルパス、変数でcdコマンド(%~dp0のヘルプ)を使用できます。

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

%~修飾子の完全なリストについては、call /?またはfor /?ヘルプを参照してください。

ただし、スタックオーバーフローに関するより完全な回答を提供するために、これを追加するだけです。上記のjebのソリューションを使用することをお勧めします。

11
David Ruhmann

私のために働いたのは、/dを追加することです:

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

/dがなかったときは、機能しませんでした。)

https://stackoverflow.com/a/18310141/470749 はそれを説明しようとします。

7
Ryan