バッチを呼び出すときに2つ以上のパラメータが渡されないようにしたいと思います。バッチ:パラメータの数を確認する
これを簡単にチェックする方法はありますか、またはパラメータ値が空になるまで何度でもSHIFTを呼び出す必要がありますか?
バッチを呼び出すときに2つ以上のパラメータが渡されないようにしたいと思います。バッチ:パラメータの数を確認する
これを簡単にチェックする方法はありますか、またはパラメータ値が空になるまで何度でもSHIFTを呼び出す必要がありますか?
あなたは単に三番目のパラメータが存在するかどうかをテストし、取り消すことができます存在する場合:
if not "%~3"=="" (
echo No more than two arguments, please
goto :eof
)
しかし、より具体的には、バッチに渡された引数の数を取得する直接的な方法は、shift
INGの短いありませんそれらを数える。だから、19を超える引数が渡されないようにしたい場合は、それを正確に行う必要があります。しかし、期待される議論の数が上記の9を下回るならば、方法はうまくいく。ここで
IF NOT "%3"=="" GOTO Too_Many_Args
は、収集のための私の小さな一例であり、引数のリストを解析し、外部コマンドに渡す:
@echo off
setlocal enabledelayedexpansion
if %1. EQU . (
echo %~0 [-t NUM] FILE [FILE...]
goto end
)
:args_loop
if "%~1" EQU "-t" (
set arg_t=%1
set arg_t_val=%2
shift
) else (
set files=!files! %1
)
shift
if %1. NEQ . goto args_loop
:args_loop_end
x:\path\to\external.exe %arg_t% %arg_t_val% %files%
:end
はhttp://stackoverflow.com/questions/1291941/batch-files-numberを参照してください。コマンドライン引数-of- –