Batch file 后藤在这个时候出人意料?

Batch file 后藤在这个时候出人意料?,batch-file,Batch File,我正在尝试制作一个小小的connect-four游戏,每当我在没有在控制台中键入任何内容的情况下按enter键时,它就会说goto在此时是意外的,我希望它能做的就是返回到:X,如果没有用户输入。任何帮助都将不胜感激 :X cls echo -------------- echo Connect Four X echo -------------- echo. echo CHOOSE A COLUMN echo. echo. echo 1 2 3 4 5 6 7 echo

我正在尝试制作一个小小的connect-four游戏,每当我在没有在控制台中键入任何内容的情况下按enter键时,它就会说goto在此时是意外的,我希望它能做的就是返回到:X,如果没有用户输入。任何帮助都将不胜感激

:X
cls
echo --------------
echo Connect Four X
echo --------------
echo.
echo CHOOSE A COLUMN
echo.
echo.
echo  1   2   3   4   5   6   7
echo.
echo (%a6%) (%b6%) (%c6%) (%d6%) (%e6%) (%f6%) (%g6%)
echo.
echo (%a5%) (%b5%) (%c5%) (%d5%) (%e5%) (%f5%) (%g5%)
echo.
echo (%a4%) (%b4%) (%c4%) (%d4%) (%e4%) (%f4%) (%g4%)
echo.
echo (%a3%) (%b3%) (%c3%) (%d3%) (%e3%) (%f3%) (%g3%)
echo.
echo (%a2%) (%b2%) (%c2%) (%d2%) (%e2%) (%f2%) (%g2%)
echo.
echo (%a1%) (%b1%) (%c1%) (%d1%) (%e1%) (%f1%) (%g1%)
echo.
echo ---------------------------
echo.
echo.
set /p xchoice=:
if %xchoice% == 1 goto xcheck1
if %xchoice% == 2 goto xcheck2
if %xchoice% == 3 goto xcheck3
if %xchoice% == 4 goto xcheck4
if %xchoice% == 5 goto xcheck5
if %xchoice% == 6 goto xcheck6
if %xchoice% == 7 goto xcheck7
goto X

如果输入的字符串带有
set/p
,那么输入的数据不包含空格是毫无疑问的。解决这个问题的方法是
“将比较运算符两侧的字符串括在引号中”
——也就是说,双引号
“不是单引号”

IF语法为IF string1运算符string2操作

你需要

if "%possiblyemptyvariable%"=="1" goto ... 

如果该值已包含引号以及有毒字符和/或空格,则仍可能存在问题。唯一绝对安全的比较方法是使用延迟扩展。如果您使用展开进行搜索和替换或子字符串操作,则在延迟展开时仍应使用封闭引号。