わかりました、これで遊んでいますが、各パラメーターに対してコマンドを実行することはできません。
として実行されるバッチファイル
test.bat /r /a /c
完全なバッチ コード
@echo on
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
:checkloop
set argtoken=1
FOR /F "Tokens=* delims=" %%G IN ("%*") DO (call :argcheck %%G)
pause
GOTO:END
:argcheck
if /i "%1"=="/r" set windows=1
if /i "%1"=="/a" set active=1
goto:eof
:end
"%*" などのすべての引数を表示します。
/r /a /c
しかし、なんらかの理由で、for ループをさまざまなパラメーターに分割して各パラメーターに対して実行することはできません:argcheck
。
更新:ここに興味がある人は、私が最終的に得たものです。私はそれをいくつかの異なるスクリプトで実装していますが、その動作は驚くべきものです。call 関数と "%*" を使用してスクリプトのどこかに配置するだけで問題ありません。:) 問題があれば投稿してください。
@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
call:ArgumentCheck %*
echo %DebugMode%
echo %RestartAfterInstall%
pause
goto:eof
:ArgumentCheck
if "%~1" NEQ "" (
if /i "%1"=="/r" SET DebugMode=Yes & GOTO:ArgumentCheck_Shift
if /i "%1"=="/a" SET RestartAfterInstall=Yes & GOTO:ArgumentCheck_Shift
SET ArgumentCheck_Help=Yes
:ArgumentCheck_Shift
SHIFT
goto :ArgumentCheck
)
If "%ArgumentCheck_Help%"=="Yes" (
Echo An invalid argument has been passed, currently this script only supports
ECHO /r /a arguments. The script will continue with the arguments
ECHO you passed that is supported.
)
GOTO:EOF
:end