コマンド プロンプト (c:\windows\system32\cmd.exe) から Perl スクリプトを実行する場合、スクリプトの実行が終了した後にコマンド プロンプトを終了するにはどうすればよいですか。
Perl スクリプト内で試してみsystem("exit 0")
ましたが、Perl スクリプトが実行されている場所から cmd プロンプト シェルを終了しません。
Perlスクリプトでコマンドも試しexit;
ましたが、それもうまくいきません。
次のようなコマンド ラインで Perl スクリプトを実行してみてください。
perl script.pl & exit
アンパサンドは、最初のコマンドが終了した後に 2 番目のコマンドを開始します。&&
を使用して、最初のコマンドが成功した場合 (エラー コードが 0) にのみ 2 番目のコマンドを実行することもできます。
試しましたcmd.exe /C perl yourscript.pl
か?
に従ってcmd.exe /?
/C
、文字列で指定されたコマンドを実行し、終了します。
START Dos コマンドを使用して、新しいウィンドウでプログラムを開始できます。それを呼び出すと、/B
追加のウィンドウは作成されません。次に、EXIT を呼び出して現在のウィンドウを閉じることができます。
それはトリックを行いますか?
perl スクリプトを実行するためだけにコマンド シェルを起動している場合は、Arkaitz Jimenez による回答が機能するはずです (私はそれに投票しました)。
runmyscript.bat
そうでない場合は、次のような内容のバッチ ファイルを作成できます。
@echo off
perl myscript.pl
exit
はexit
シェル セッションを終了します (副作用として、バッチ スクリプト自体も終了します)。
Perl から親シェルにシグナルを送ることができます:
kill(9,$PARENT_PID);`
残念ながら、このgetppid()
関数は Windows 上の Perl には実装されていないため、別の方法で親シェルの PID を見つける必要があります。また、シグナル #9 は最適な選択ではない可能性があります。