我正在尝试创建一个只接受数字的简化IF语句

时间:2014-06-10 18:51:41

标签: windows batch-file if-statement terminal

这是我目前的代码


@echo off
IF "%~1"=="/?" goto :showhelp
set "137501arg="
set /a "137501arg=%~1"
set "137501arg2="
set /a "137501arg2=%~3"
IF "%137501arg%" LEQ "0" goto :validarguments
IF "%137501arg%" GEQ "0" goto :validarguments
:badarguments
Echo Error: Wrong data in arguments.
goto :eof
:validarguments
IF %137501arg2% LEQ 0 goto :validarguments1
IF %137501arg2% GEQ 0 goto :validarguments1
goto :badarguments
:validarguments1
IF "%~2"=="Return" goto :validargumentsreturn
IF "%~2"=="return" goto :validargumentsreturn
goto :badarguments
:validargumentsreturn
IF "%137501arg%"=="%137501arg2%" (
IF "%~4"=="(" (
set 137501argumentnumber=0
:validargumentsblock
set /a 137501argumentnumber=%137501argumentnumber% + 1
set /p 137501arg%137501argumentnumber%= More?
IF "%137501arg%"==")" goto :validargumentsparse
goto :validargumentsblock
:validargumentsparse
set 137501currentargument=0
:validargumentsparse1
set /a 137501currentargument=%137501currentargument% + 1
set 137501argument%137501currentargument%=%137501arg%%137501currentargument%
IF "%137501argument%137501currentargument%"==")" goto :validargumentsparse2
goto validargumentsparse1
:validargumentsparse2
set 137501currentargument1=0
:validargumentsparse3
set /a 137501currentargument1=%137501currentargument1% + 1
%137501argument%%137501currentargument1%
IF "%137501currentargument1%"=="%137501currentargument" goto :eof
)
%~4 %~5 %~6 %~7 %~8 %~9
goto :eof
)
goto :eof
:showhelp
Echo Usage: %~n0 varName Return Value Input

<小时/> 使用此命令在第一个和第三个参数最初工作时使用单个命令,但是当我添加:validargumentsblock部分时,它不再起作用。此外,当我尝试使用“(”而不是最后的命令给我这个错误,


Invalid number.  Numeric constants are either decimal (17), hexadecimal (-x11), or octal (021).
Invalid number.  Numeric constants are either decimal (17), hexadecimal (-x11), or octal (021).
The syntax of the command is incorrect.

<小时/> 我要做的是让它像IF语句一样运行,但只让它接受数字。我想让它像

一样工作
when Var Return 5 (
echo The var is equal to 5.
goto :eof
)
echo The var is not equal to 5.

<小时/> 我知道如果VAR EQU NUM与此类似,但它可以与字母一起使用,我试图阻止它接受任何字母。

<小时/>



<小时/> 我最终编辑了它并做了magoo所说的,现在我得到的唯一错误是 命令的语法不正确
我的代码现在是


@echo off
IF "%~1"=="/?" goto :showhelp
    set "A137501arg="
    set /a "A137501arg=%~1"
    set "A137501arg2="
    set /a "A137501arg2=%~3"
IF "%A137501arg%" LEQ "0" goto :validarguments
IF "%A137501arg%" GEQ "0" goto :validarguments
:badarguments
Echo Error: Wrong data in arguments.
goto :eof
:validarguments
IF %A137501arg2% LEQ 0 goto :validarguments1
IF %A137501arg2% GEQ 0 goto :validarguments1
goto :badarguments
:validarguments1
IF "%~2"=="Return" goto :validargumentsreturn
IF "%~2"=="return" goto :validargumentsreturn
IF "%~2"=="Returns" goto :validargumentsreturn
IF "%~2"=="returns" goto :validargumentsreturn
goto :badarguments
:validargumentsreturn
IF "%A137501arg%"=="%A137501arg2%" (
IF "%~5"=="(" goto validargumentsblock
goto validargumentsend
:validargumentblock
set A137501argumentnumber=0
:validargumentsblock1
set /a A137501argumentnumber=%A137501argumentnumber% + 1
set /p A137501arg%A137501argumentnumber%= More?
IF "%A137501arg%"==")" goto :validargumentsparse
goto :validargumentsblock
:validargumentsparse
set A137501currentargument=0
:validargumentsparse1
set /a A137501currentargument=%A137501currentargument% + 1
set A137501argument%A137501currentargument%=%A137501arg%A137501currentargument%%
IF "%A137501argument%A137501currentargument%"==")" goto :validargumentsparse2
goto validargumentsparse1
:validargumentsparse2
set A137501currentargument1=0
:validargumentsparse3
set /a A137501currentargument1=%A137501currentargument1% + 1
%A137501argument%%A137501currentargument1%
IF "%A137501currentargument1%"=="%A137501currentargument" goto :eof
goto :eof
:validargumentsend
%~4 %~5 %~6 %~7 %~8 %~9
goto :eof
)
goto :eof
:showhelp
Echo Usage: %~n0 varName Return(s) Value Input
Echo Example: When Variable Returns 5 Echo Hi

<小时/>  我怎么想阻止它计算
%A137501argument%A137501currentargument%

作为 %A137501argument(argumentnumber)% ??? < p>

0 个答案:

没有答案