批量文件if语句被跳过

时间:2018-02-20 17:46:17

标签: batch-file if-statement cmd error-handling

执行我的脚本的一部分时,它会挂起一组if语句,而不是运行输出命令。

:errorcheck
echo this is the error test, please verify your wireless profiles are listed below.
netsh wlan show profiles
set /p cog="did your profiles show up properly? (Y/N)"
if %cog%=="Y" goto ending
if %cog%=="N" goto retry
echo an error occured, please retry
goto errorcheck
:retry

它卡在循环中,然后回到:errorcheck 我已经使用echo %cog%验证了set语句的工作原理,但我无法将其缩小范围。

2 个答案:

答案 0 :(得分:1)

您需要引用IF中的环境变量(或删除测试中的引号)

{{1}}

否则评估Y ==" Y"这不是真的

此外,您可能希望添加对Y和N的大写和小写版本的检查,因为它将进行区分大小写的比较

答案 1 :(得分:1)

在If语句中,Y和N周围不需要双引号。您可能还希望更改大写字母Y和N以降低或复制这些行并检查两种情况。

此代码对我有用:

:errorcheck
echo this is the error test, please verify your wireless profiles are listed below.
netsh wlan show profiles
set /p cog="did your profiles show up properly? (Y/N)"
echo reply is  %cog%
if %cog%==y goto ending
if %cog%==n goto retry
echo an error occured, please retry
goto errorcheck
:retry
goto errorcheck
:ending