web-dev-qa-db-ja.com

バッチファイルを呼び出し、独自のパス/ディレクトリを使用して実行する

次のような他のバッチファイルを呼び出すバッチファイルがあります。

e:\foo\master.batのコンテンツ:

call e:\bar\run1.bat 

e:\bar\run1.batにはコンテンツがあります

app1.exe

問題は、master.batディレクトリにあるのではなくapp1.exeディレクトリにあると想定されるため、e:\fooを実行するとe:\barが実行されないことです。

11
Omu

あなたはapp1.exeがどこにあるのか少しわかりません。

フォルダーをrun1.batと共有している場合は、run1.batを変更します。

どちらかに

@Echo off
Pushd "%~dp0"
app1.exe
popd

または

@Echo off
"%~dp0app1.exe"

%0は現在実行中のバッチを参照し、修飾子~dpはドライブとパスを返します(末尾に円記号を付けます)。

12
LotPings

質問への回答は、Stack Overflowの同様の質問から抽出できます。

バッチファイルの現在のディレクトリは何ですか?

ここで説明する変数を使用すると、run1.batを更新してapp_.exeを次の行で呼び出すことができます:%~dp0app1.exe。 (%〜dp0変数には末尾にスラッシュが含まれます。)これにより、現在のバッチファイルの場所から実行可能ファイルを実行するようにバッチファイルに指示します。

4
SturdyErde