Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在bat文件中设置变量_Windows_Batch File_Cmd - Fatal编程技术网

Windows 在bat文件中设置变量

Windows 在bat文件中设置变量,windows,batch-file,cmd,Windows,Batch File,Cmd,好的,我的问题直截了当: 我在bat脚本中使用了set/p: SET x= SET /P x= IF /I '%x%' == '1' GOTO 1 IF /I '%x%' == '2' GOTO 2 IF /I '%x%' == '3' GOTO 3 IF /I '%x%' == '4' GOTO 4 IF /I '%x%' == '5' GOTO 5 我的问题是,如果有人输入了一些不寻常的东西(如6),我希望命令是goto a(因此他们返回菜单) 那么有没有办法做到这一点呢?比如使用%e

好的,我的问题直截了当: 我在bat脚本中使用了set/p:

SET x= 
SET /P x= 
IF /I '%x%' == '1' GOTO 1
IF /I '%x%' == '2' GOTO 2
IF /I '%x%' == '3' GOTO 3
IF /I '%x%' == '4' GOTO 4
IF /I '%x%' == '5' GOTO 5
我的问题是,如果有人输入了一些不寻常的东西(如6),我希望命令是goto a(因此他们返回菜单) 那么有没有办法做到这一点呢?比如使用%errorlevel%或“else”?谢谢


如果在所有其他标签之前设置
goto:repeat
,则如果输入无效,它将重复提示,如果输入无效,它将被跳过。

如果您不在XP上,我将使用
choice
命令。另外,我应该指出,
/I
用于不区分大小写的比较,您正在检查数值(它仍然有效,只是没有必要)。@SomethingDark因为它不是真正的数字,所以我只是显示了数字,以使您解释起来不那么复杂:P thanq无论如何好,我还注意到,如果我插入并输入包含空格的内容,或者在没有任何输入的情况下按enter键,就会出现错误,甚至不会进入“无效输入”区域并退出cmd…有什么帮助吗?@adamthecarcenter-在比较中使用双引号-在我的回答中已修复-强制将参数作为字符串。
:repeat
SET "x=" 
SET /P "x=enter x:" 
IF /I "%x%" == "1" GOTO 1
IF /I "%x%" == "2" GOTO 2
IF /I "%x%" == "3" GOTO 3
IF /I "%x%" == "4" GOTO 4
IF /I "%x%" == "5" GOTO 5
echo invalid input
goto :repeat
:1
...
:2
....