1. ホーム
  2. windows

[解決済み] CALLコマンドと/WAITオプション付きSTARTの比較

2022-03-04 05:37:13

質問内容

STARTコマンドにWAITオプションを付けるとどうなるのでしょうか?

START /wait notepad.exe 
START /wait  notepad.exe 

...CALLコマンドを使うのと何か違いがあるのでしょうか?

CALL notepad.exe 
CALL notepad.exe 

実行される内容によって、一方が他方とは異なる動作をするような状況はありますか?

どのように解決するのですか?

について exe ファイルでは、その違いはほとんど重要ではないと思います。
しかし exe は必要ありません。 CALL .

別のバッチを開始するときは、大きな違いです。
として CALL は同じウィンドウで起動し、呼び出されたバッチは同じ変数コンテキストにアクセスすることができます。
そのため、呼び出し側に影響を与える変数を変更することも可能です。

START は呼び出されたバッチ用に新しい cmd.exe を作成し、/b を指定しない場合は新しいウィンドウを開きます。
新しいコンテキストであるため、変数を共有することはできません。

相違点

使用方法 start /wait <prog>
- を実行すると、環境変数の変更が失われます。 <prog> 終了
- 呼び出し側は <prog> が終了しました。

使用方法 call <prog>
- について エクセ を起動するのと同じなので、省略することができます。 <prog>
- については エクスプログ を起動する。 エクセ 非同期ですが、その挙動は exe を使用します。
- については バッチ が呼び出されたとき、呼び出し側のバッチは継続します。 <batch-file> が終了すると、呼び出しがなければ、コントロールは呼び出し元のバッチに戻りません。

追記

使用方法 CALL は、(バッチファイルやexeファイルの)パラメータを変更することができますが、キャレットやパーセント記号が含まれている場合に限られます。

call myProg param1 param^^2 "param^3" %%path%%

に展開されます(バッチファイル内より)。

myProg param1 param2 param^^3 <content of path>