如果变量等于,例如1
,那么goto
到start1
但是如果相同的变量等于2
,那么goto
到start2
这是我到目前为止所做的:
if %method% == "1" (goto start1)
if %method% == "2" (goto start2)
:start1
echo start1
pause
exit
:start2
echo start2
pause
exit
但即使method
变量等于2
,它总是回显我start1
......
答案 0 :(得分:6)
你必须小心空白。写
if "%method%"=="1" (goto start1)
等。您可能需要或不需要%method%
周围的额外报价,具体取决于您设置环境变量的方式。
答案 1 :(得分:0)
如果%method%
与1
或2
不匹配,您还可以确保不会执行这些部分的任何部分。您可以goto :eof
或仅使用exit /b 1
退出。
if %method%=="1" (goto start1)
if %method%=="2" (goto start2)
echo Invalid method: %method%
goto :eof
:start1
echo start1
pause
exit
:start2
echo start2
pause
exit
答案 2 :(得分:0)
有很多if语句有点不整齐..有一个计数器用于比较if语句。这应该可以解决问题,我想......
@echo off
Setlocal enabledelayedexpansion
Set returned_value=0
Set /p method= enter value:
: begin
For %%i in (*) do (
Call :next_number returned_value
If "!method!"=="!returned_value!" (
Goto start!returned_value!
)
)
Goto begin
:next_number
Set /a %~1+=1
: start1
echo I am start one !!
rem Other statements... etc
从那里你可以拥有各种各样的功能,从start1到你想要的任何一点。