首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查".bat“文件中的命令行参数?

如何检查".bat“文件中的命令行参数?
EN

Stack Overflow用户
提问于 2011-02-10 11:52:27
回答 4查看 224.8K关注 0票数 114

我的操作系统是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!
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-10 12:01:29

需要检查参数是否为空:if "%~1"=="" goto blank

完成此操作后,在-b:if "%~1"=="-b" (goto specific) else goto unknown上执行if/else开关

使用引号将参数括起来,可以更轻松地检查空白/空/缺少参数等内容。"~“确保去掉双引号(如果它们位于命令行参数上)。

票数 155
EN

Stack Overflow用户

发布于 2011-02-10 12:02:30

查看http://ss64.com/nt/if.html可以找到答案;命令是IF [%1]==[] GOTO NO_ARGUMENT或类似命令。

票数 29
EN

Stack Overflow用户

发布于 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
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4953170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档