バッチファイルに引数が無ければ終了する
Y子です。
引数が必須のバッチファイルには、「引数が無い場合の処理」が欠かせません。
今回は、「引数がなければ終了する」という処理を考えます。
概要・用途
引数の有無を確認し、無い場合は終了します。
引数が必須の処理の冒頭に記述することで、エラーを防ぎます。
なるべく短く書きます。
【確認環境:Windows 10 Home (Bld. 19042.867)】
コード
(1) シンプルな例
これまでの記事でも使っている書き方です。
@echo off
rem 引数がない場合は終了する
if "%~1"=="" (
echo 引数がありません
pause
exit /b
)
rem 引数があった場合の処理
echo 引数:%~1
第1引数が空文字と一致すれば、引数無しと判定しています。
その際、第1引数は「$1
」(ダブルクオート付きの場合がある)ではなく、「%~1
」(ダブルクオートがあれば削除)を使います。
引数があれば、その引数を出力することにします。
引数が無い場合・ある場合の動作確認をしてみます。
> argument_check1.bat
引数がありません
続行するには何かキーを押してください . . .
> argument_check1.bat aaa
引数:aaa
(2) コンパクト版
(1)は「シンプルな例」と言いながら5行も使っているので、行数を節約した書き方も考えてみます。
@echo off
rem 引数がない場合は終了する
if "%~1"=="" (echo 引数がありません & pause & exit /b)
rem 引数があった場合の処理
echo 引数:%~1
複数のコマンドを「&
」でつないで、1行で書けてしまいました。
> argument_check2.bat
引数がありません
続行するには何かキーを押してください . . .
> argument_check1.bat bbb
引数:bbb
もちろん、実行結果は5行のときと同じです。
引数チェック処理が主目的でなければ、このようにコンパクトに書いた方が、本来の目的のコードに集中できてよい気がします。
おわりに
行数を減らす試みは奥が深そうです。
コードが読みやすい範囲で、いろいろ工夫してみたいです。
ではまた!
Author And Source
この問題について(バッチファイルに引数が無ければ終了する), 我々は、より多くの情報をここで見つけました https://qiita.com/koiwaiwaiko/items/6d2bcb5f02ef69ca0836著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .