1. ホーム
  2. windows

[解決済み] Windowsバッチスクリプトによるプログラムの起動とコンソールの終了

2022-12-13 08:30:35

質問

次のようなバッチスクリプトを使用して、プログラムを起動することができます。 notepad.exe . このバッチ ファイルをダブルクリックすると、メモ帳は普通に起動しますが cmd を起動した人 notepad.exe はバックグラウンドで残っています。を起動するためにはどうすればよいのでしょうか? notepad.exe を起動し、cmdウィンドウを消すにはどうしたらよいでしょうか?

編集 : を使うよりも複雑です。 \I .

cmdcygwin であり、かつ cygwin が始まる notepad . を使っています。

start \I \path\cygwin\bin\bash.exe

と表示され、1つ目のウィンドウ(cmd)は消えますが、2つ目のウィンドウ( \cygwinbinbash.exe )がバックグラウンドで残っています。cygwinのスクリプトでは notepad.exe & と入力し、終了します。

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

start "" "%SystemRoot%\Notepad.exe"

を残して "" を開始とアプリケーションパスの間に置いてください。


説明を追加しました。

通常、以下のようなバッチファイルからプログラムを起動すると、OPの言うように背景に黒いウィンドウが表示されます。

%SystemRoot%\Notepad.exe

同じコマンドプロンプト(プロセス)でメモ帳を起動していることが原因です。メモ帳を閉じた後、コマンドプロンプトが終了してしまいます。これを回避するために start コマンドを使用して、このように別プロセスを開始します。

start %SystemRoot%\Notepad.exe

このコマンドは、パスにスペースがなければ問題ありません。万が一に備えて、パスにスペースがあっても大丈夫なように " のように引用します。

start "%SystemRoot%\Notepad.exe"

しかし、このコマンドを実行すると、別の空白のコマンドプロンプトが起動するだけです。なぜでしょうか?もしあなたが start /? を探すと、その start の間にある引数を認識します。 " の間にある引数を、起動する新しいコマンドプロンプトのタイトルとして認識します。そこで、それを解決するために、次のようなコマンドを用意します。

start "" "%SystemRoot%\Notepad.exe"

の第一引数は "" はタイトルを設定するもので、ここでは空白としています。 "%SystemRoot%\Notepad.exe" の第二引数は実行するターゲット・コマンドです(パス中のスペースをサポートします)。

コマンドにパラメータを追加する必要がある場合は、引用符で囲んで追加すればよい、すなわち。

start "" "%SystemRoot%\Notepad.exe" "<filename>"