[解決済み] バッチファイルを終了させるためのベストプラクティス?[クローズド]
2022-03-10 07:39:30
質問
バッチファイルで、様々な条件をチェックし、ヘルプメッセージを表示したい
メッセージを表示した後、バッチファイルを終了させるには、どれが一番良い方法ですか?
if "%1"=="/?"(
echo "help message"
exit /b 0
)
[more code]
または
if "%1"=="/?"(
echo "help message"
goto :EOF
)
[more code]
:EOF
素人目には前者の方が良いように思えますが、ネット上の多くの例では、このように
GOTO
タグ方式
これに対して、SOコミュニティはどのような意見をお持ちですか?
解決方法は?
個人的には
exit
.
通常の
exit
コマンドは単に現在のスクリプトとその親を終了させます (例えば、コマンドラインからスクリプトを実行したり、他のバッチファイルから呼び出したりした場合)。
exit /b
は、現在のスクリプトを終了させるために使われますが、親ウィンドウ/スクリプト/呼び出しラベルは開いたままです。exitでは、終了時のエラーレベルを追加することもできます。例えば
exit /b 1
を生成します。%errorlevel%
を1としています。 例
@echo off
call :getError rem Calling the :getError label
echo Errorlevel: %errorlevel% rem Echoing the errorlevel returned by :getError
pause
:getError
exit /b 1 rem exiting the call and setting the %errorlevel% to 1
印刷されるでしょう。
Errorlevel: 1
press any key to continue...
この方法でエラーレベルを設定すると、失敗する可能性のあるバッチスクリプトを作成するときに便利です。このメソッドを使って
:labels
を、それぞれ異なるエラーに対応させ、固有のエラーレベルを返すようにします。
-
goto :eof
は現在のスクリプト(呼び出し)を終了させますが、親ファイルは終了させません(同じようにexit /b
) -
exitとは異なり、exiting errorlevelを設定することができます。
goto :eof
は、現在設定されているエラーレベルを自動的に設定するため、問題を特定することが難しくなります。
また、この2つは同じバッチファイルの中で一体となって使用することもできます。
@echo off
call :getError
echo %errorlevel%
pause
goto :eof
:getError
exit /b 2
バッチスクリプトを終了させる別の方法として
cmd /k
単体のバッチファイルで使用する場合。
cmd /k
を実行すると、通常のコマンドプロンプトに戻ります。
全体として、私は
exit
エラーレベルを設定できるという理由だけで、実際にはあなた次第です。
関連
-
[解決済み] WPCups.exeとは何ですか?[クローズド]です。
-
[解決済み] Windowsの能書きは?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] バッチファイルに引数を渡すにはどうしたらいいですか?
-
[解決済み] Windowsのバッチファイルから長いコマンドを複数行に分割する
-
[解決済み] バッチファイル内で改行をエコーする方法を教えてください。
-
[解決済み] N日以上前のファイルを削除するバッチファイル
-
[解決済み] バッチファイル実行後にコンソールを自動終了させない方法
-
[解決済み】Windowsのバッチファイル:.batと.cmdの違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] xcopyがAccess Deniedと表示される原因は何ですか?
-
[解決済み] wampでApacheが起動しない
-
[解決済み] WPCups.exeとは何ですか?[クローズド]です。
-
[解決済み] vbscriptのコンソールへの出力
-
[解決済み] Windowsアラート:不正なピンが何度も入力されています。
-
[解決済み] Windowsでフォルダへのアクセスを回復する方法
-
[解決済み] Autohotkey Controlsendコマンドを理解する
-
tensorflow load error 終了コード -1073741819 (0xC0000005)でプロセス終了。
-
.NET フレームワークのインストールに失敗しました 0x800c0006 解決方法
-
[解決済み] PowerShellのコマンドラインからWindowsのバージョンを確認する方法