バッチファイルに引数が無ければ要求する
Y子です。
昨日に引き続き、引数チェックシリーズです。
概要・用途
引数の有無を確認し、無い場合は対話式で入力を求めます。
【確認環境:Windows 10 Home (Bld. 19042.867)】
コード
(1) シンプルな例
バッチファイルに引数を与えれば、引数を使います。
引数が無ければ、対話式で標準入力からの入力を求め、同じ変数に格納します。
argument_interactive1.bat
@echo off
rem 変数初期化
set str_arg=
rem 引数がない場合は対話モードで取得
if "%~1"=="" (
set /P str_arg="引数は? : "
) else (
set str_arg=%~1
)
echo 引数:%str_arg%
pause
まず、引数「aaa
」を与えて実行した場合。
実行結果:引数あり
> argument_interactive1.bat aaa
引数:aaa
続行するには何かキーを押してください . . .
次に、引数無しで実行し、聞かれてから「aaa
」を入力した場合。
実行結果:対話式で入力
> argument_interactive1.bat
引数は? : aaa
引数:aaa
続行するには何かキーを押してください . . .
ただ、聞かれたときにEnterを押してしまうと、結局は変数に空文字が渡ってしまうので、エラー処理としては不十分です。
実行結果:対話式でも空欄
> argument_interactive1.bat
引数は? :
引数:
続行するには何かキーを押してください . . .
(2) 入力させるまで絶対にあきらめない例
そこで、入力があるまで無限に入力を求めるよう、修正してみました。
argument_interactive2.bat
@echo off
rem 変数初期化
set str_arg=
:label_top
rem 引数がない場合は対話モードで取得
if "%~1"=="" (
set /P str_arg="引数は? : "
) else (
set str_arg=%~1
)
if "%str_arg%"=="" (
echo 引数は絶対に必要です
goto :label_top
) else (
echo 引数:%str_arg%
)
pause
引数なし、標準入力も絶対に入れない、という人はこうなります。
実行結果:対話式で絶対にあきらめない
> argument_interactive2.bat
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? :
引数は絶対に必要です
引数は? : bbb
引数:bbb
続行するには何かキーを押してください . . .
おわりに
エラー処理だいじ。
では!
Author And Source
この問題について(バッチファイルに引数が無ければ要求する), 我々は、より多くの情報をここで見つけました https://qiita.com/koiwaiwaiko/items/d63c58548167806fa0ee著者帰属:元の著者の情報は、元の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 .