我的操作系统是Windows Vista。我需要有一个".bat“文件,用来检查用户是否输入了任何命令行参数。如果是,那么如果参数等于-b
,那么我将做一些事情,否则我将标记为"Invalid input“。如果用户没有输入任何命令行参数,那么我将执行一些操作。我已经创建了下面的.bat文件。它适用于-b
,但不等同于-b
情况,但当用户不传递任何命令行参数时,它将失败。
我总是收到错误:
GOTO was unexpected at this time.
有人能告诉我我哪里做错了吗?
ECHO OFF
CLS
ECHO.
IF [%1]==[/?] GOTO BLANK
IF %1=="-b" GOTO SPECIFIC
IF NOT %1=="-b" GOTO UNKNOWN
:SPECIFIC
ECHO SPECIFIC
GOTO DONE
:BLANK
ECHO No Parameter
GOTO DONE
:UNKNOWN
ECHO Unknown Option
GOTO DONE
:DONE
ECHO Done!
发布于 2011-02-10 12:01:29
需要检查参数是否为空:if "%~1"=="" goto blank
完成此操作后,在-b:if "%~1"=="-b" (goto specific) else goto unknown
上执行if/else开关
使用引号将参数括起来,可以更轻松地检查空白/空/缺少参数等内容。"~“确保去掉双引号(如果它们位于命令行参数上)。
发布于 2011-02-10 12:02:30
查看http://ss64.com/nt/if.html可以找到答案;命令是IF [%1]==[] GOTO NO_ARGUMENT
或类似命令。
发布于 2011-02-10 12:02:53
您正在比较字符串。如果省略了参数,%1
将扩展为空白,例如,命令将变为IF =="-b" GOTO SPECIFIC
(这是一个语法错误)。用引号(或方括号)将字符串括起来。
REM this is ok
IF [%1]==[/?] GOTO BLANK
REM I'd recommend using quotes exclusively
IF "%1"=="-b" GOTO SPECIFIC
IF NOT "%1"=="-b" GOTO UNKNOWN
https://stackoverflow.com/questions/4953170
复制相似问题