此代码只是跳过“如果”推荐并转到另一个 我不会看到这样的想法: “2 2 end”或“3 3 end”,但它仅显示“3 1 end”或“2 1 end”。请帮助我新的。
@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
答案 0 :(得分:2)
批处理中的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。
也有可能 - 我不太清楚自己的工作原理 - 您可能希望使用延迟扩展,这需要您更改IF
以使用!
代替%
:
if "!number!"=="1" goto 1
SS64有一个非常好的批量参考网站;您可能需要特别注意Delayed Expansion和IF
command。