Wir haben eine Batch-Datei, die Parameter akzeptiert.
Wir lesen dann den Wert des Parameters mit% 1 für den ersten Parameter.
Die Frage ist: Wie können wir überprüfen, ob% 1 einen Wert hat?
Wir haben eine Batch-Datei, die Parameter akzeptiert.
Wir lesen dann den Wert des Parameters mit% 1 für den ersten Parameter.
Die Frage ist: Wie können wir überprüfen, ob% 1 einen Wert hat?
Antworten:
Laut http://www.robvanderwoude.com/parameters.php können Sie sie mit einem if überprüfen:
oder
oder
Hier ist meine Lösung für dieses Problem. Ich habe diesen Stil verwendet, um "Named Parameters" anstelle der traditionellen Positionswerte zu verwenden. Auf diese Weise kann die Validierung standardmäßig und mit verwendeten Parametern durchgeführt werden.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: batchparms.bat = This is an example of named parameters in a batch file. ::
:: This demonstrates the ability to name parameters instead of the current ::
:: positional restrictions provided natively. ::
:: ::
:: Parameters: ::
:: -first = First named parm. Should be AAA BBB or CCC [Default is AAA] ::
:: -second = Second named parm. Should be XXX YYY or ZZZ [Default is ZZZ] ::
:: -flagone = First named switch [Default is TRUE] ::
:: -flagtwo = Second named switch [Default is TRUE] ::
:: ::
:: 02/19/2010 - HighDesertRaider ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: ::
:: 02/22/2012 - Modified to be used as a Demo ::
:: - HighDesertRaider ::
:: ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: Set Environment
::
:: These flags need to be set off to use named parameters
::
SET FLAG_FIRST=0
SET FLAG_SECOND=0
SET FLAG_ONE=0
SET FLAG_TWO=0
::
:: Set Default Values
::
CLS
SET PARM_FIRST=AAA
SET PARM_SECOND=ZZZ
SET PARM_ONE=1
SET PARM_TWO=1
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Parse the input parameters, and assign the arguments to variables. ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
FOR %%A in (%*) DO (
IF !FLAG_FIRST!==1 (
SET PARM_FIRST=%%A
SET FLAG_FIRST=0
) ELSE (
IF !FLAG_SECOND!==1 (
SET PARM_SECOND=%%A
SET FLAG_SECOND=0
) ELSE (
IF /I %%A==-FIRST (
SET FLAG_FIRST=1
) ELSE (
IF /I %%A==-SECOND (
SET FLAG_SECOND=1
) ELSE (
IF /I %%A==-FLAGONE (
SET PARM_ONE=0
) ELSE (
IF /I %%A==-FLAGTWO (
SET PARM_TWO=0
) ELSE (
SET BADPARMMSG=Parameter %%A is not a valid option.
GOTO:BadFormExit)))))))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Validate -ParmFirst ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:ValidateParmFirst
ECHO Validate -ParmFirst %PARM_FIRST%
FOR %%A in (AAA BBB CCC) DO (
IF /I %PARM_FIRST%==%%A (
GOTO ValidParmFirst))
::
:: A Valid Parm Value was not found in the list
::
SET BADPARMMSG=Value %PARM_FIRST% is not a valid value for -ParmFirst
ECHO Please select one of the following values:
ECHO AAA
ECHO BBB
ECHO CCC
GOTO BadFormExit
:ValidParmFirst
ECHO Value %PARM_FIRST% is valid for -ParmFirst
ECHO.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Validate -ParmSecond ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:ValidateParmSecond
ECHO Validate -ParmSecond %PARM_SECOND%
FOR %%A in (XXX YYY ZZZ) DO (
IF /I %PARM_SECOND%==%%A (
GOTO ValidParmSecond))
::
:: A Valid Parm Value was not found in the list
::
SET BADPARMMSG=Value %PARM_FIRST% is not a valid value for -ParmSecond
ECHO Please select one of the following values:
ECHO XXX
ECHO YYY
ECHO ZZZ
GOTO BadFormExit
:ValidParmSecond
ECHO Value %PARM_SECOND% is valid for -ParmSecond
ECHO.
::
::
::
ECHO.
ECHO The value of -first is %PARM_FIRST%
ECHO The value of -second is %PARM_SECOND%
ECHO The value of -flagone is %PARM_ONE%
ECHO The value of -flagtwo is %PARM_TWO%
ECHO.
GOTO:RunMyCodeCauseIGotGoodParms
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: This function shows the user the correct form to use ::
:: and exits the script. ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:BadFormExit
ECHO.
ECHO Sorry friend, but your form is bad.
ECHO.
ECHO batchparms.bat %* is not correct.
ECHO Reason: %BADPARMMSG%
ECHO.
ECHO the correct syntax for this command is:
ECHO "batchparms.bat [-first AAA | BBB | CCC] [-second XXX | YYY | ZZZ] [-flagone] [-flagtwo]"
EXIT /B 1
:RunMyCodeCauseIGotGoodParms
::
:: Insert Code Here to Run once Parms are Validated
::
EXIT /B
Parmameterwerte können in einer Datei aufgelistet werden, sodass Sie die Batchdatei nicht ändern müssen, nur um einen neuen Wert hinzuzufügen. und es könnte mehr Text hinzugefügt werden, um Werte usw. zu erklären.
%1
nicht%1%