Batch file 批次';如果';命令不起作用
这段代码只需跳过“if”并转到另一个 我不想看到这样的人: “2 2端”或“3 3端”,但仅显示“3 1端”或“2 1端”。请帮助我这方面的新手Batch file 批次';如果';命令不起作用,batch-file,Batch File,这段代码只需跳过“if”并转到另一个 我不想看到这样的人: “2 2端”或“3 3端”,但仅显示“3 1端”或“2 1端”。请帮助我这方面的新手 @echo off set /p number= if %number%=="1" goto 1 if %number%=="2" goto 2 if %number%=="3" goto 3 :1 echo 1 goto end :2 echo 2 goto end :3 echo 3 goto end :end echo end pause 批
@echo off
set /p number=
if %number%=="1" goto 1
if %number%=="2" goto 2
if %number%=="3" goto 3
:1
echo 1
goto end
:2
echo 2
goto end
:3
echo 3
goto end
:end
echo end
pause
批处理中的
IF
命令纯粹是字符串比较,而不是数字比较。此外,引号很重要。您的代码包含以下行:
if %number%=="1" goto 1
它将变量number
的值与字符串“1”
进行比较。但是,您的SET
语句隐式地希望您键入1
或2
或3
,不带引号
为了避免在用户提供空白或空字符串作为对SET
提示的响应时出现语法错误,您需要引用%number%
:
if "%number%"=="1" goto 1
此外,您希望在标签:1
之前放置一个无条件的goto,以保护该子例程;如果不输入,则如果用户未输入1
、2
或3
,则会由于故障而执行选项1
也有可能-我自己不太清楚它是如何工作的-您可能想要使用延迟扩展,这将要求您更改,如果s使用代码>而不是%
:
if "!number!"=="1" goto 1
有一个非常好的参考网站批量在;您可能需要特别注意。批处理中的IF
命令纯粹是字符串比较,而不是数字比较。此外,引号很重要。您的代码包含以下行:
if %number%=="1" goto 1
它将变量number
的值与字符串“1”
进行比较。但是,您的SET
语句隐式地希望您键入1
或2
或3
,不带引号
为了避免在用户提供空白或空字符串作为对SET
提示的响应时出现语法错误,您需要引用%number%
:
if "%number%"=="1" goto 1
此外,您希望在标签:1
之前放置一个无条件的goto,以保护该子例程;如果不输入,则如果用户未输入1
、2
或3
,则会由于故障而执行选项1
也有可能-我自己不太清楚它是如何工作的-您可能想要使用延迟扩展,这将要求您更改,如果s使用代码>而不是%
:
if "!number!"=="1" goto 1
有一个非常好的参考网站批量在;您可能需要特别注意和。删除引号或用引号括起变量。(如果
比较是文字和精确的,)删除引号或用引号括起变量。(如果
比较是文字和精确的,if。)