选择“goto此时出乎意料”

时间:2014-05-13 19:42:28

标签: batch-file if-statement cmd goto

在你回答之前谢谢大家。所以这是我在Stackoverflow.com中的第一个问题我一直收到一条错误消息,说“此时goto意外”,我搜索了解决方案,但我找不到任何东西。因此,如果你知道我做错了请告诉我:)我很新批...我很抱歉,如果我真的没有错误,但我只是不知道什么是错的。

@echo off



:type
cls
echo %msg1%
echo %order%

choice /C abcdefghijklmnopqrstuvwxyz12 /n


if %errorlevel% == 28 goto save 
if %errorlevel% == 27 goto varsave 
if %errorlevel% == 26 goto set2 
if %errorlevel% == 25 goto set2
if %errorlevel% == 24 goto set2 
if %errorlevel% == 23 goto set2 
if %errorlevel% == 22 goto set2 
if %errorlevel% == 21 goto set2 
if %errorlevel% == 20 goto set2 
if %errorlevel% == 19 goto set2 
if %errorlevel% == 18 goto set2 
if %errorlevel% == 17 goto set2 
if %errorlevel% == 16 goto set2 
if %errorlevel% == 15 goto set2 
if %errorlevel% == 14 goto set2 
if %errorlevel% == 13 goto set2 
if %errorlevel% == 12 goto set2 
if %errorlevel% == 11 goto set2 
if %errorlevel% == 10 goto set2 
if %errorlevel% == 9 goto set 
if %errorlevel% == 8 goto set 
if %errorlevel% == 7 goto set 
if %errorlevel% == 6 goto set 
if %errorlevel% == 5 goto set
if %errorlevel% == 4 goto set 
if %errorlevel% == 3 goto set 
if %errorlevel% == 2 goto set 
if %errorlevel% == 1 goto set 

2 个答案:

答案 0 :(得分:1)

获取goto was unexpected的唯一方法是空%errorlevel%变量。这绝不应该发生。您确定,您没有在代码中的某处手动设置它(类似set errorlevel=

正如其他人所说,使用if %errorlevel% == xx的构造应该可以正常工作。但是你可以大大缩短你的代码,因为if errorlevel xx的确意味着:"如果errorlevel是xx 或更高" (不像if %errorlevel% == xx,它会进行字符串比较):

@echo off
:type 
cls 
echo %msg1% echo %order%

choice /C abcdefghijklmnopqrstuvwxyz12 /n

if errorlevel 28 goto save
if errorlevel 27 goto varsave
if errorlevel 10 goto set2
if errorlevel 1 goto set  

答案 1 :(得分:0)

在没有% ERRORLEVEL的情况下试用它。并删除== s。