我输入y / n总是得到相同的结果。为什么?

时间:2017-06-09 08:00:55

标签: batch-file cmd

是的,我知道,此任务需要管理员权限,但我没有包含它,因为它不会影响我的问题。

我的问题是: 我打字" y"," n"," Y"或者" N",我总是到

:yes
    cls
    set /p usrnm=Enter Username:

我不知道为什么。有人有解决方案吗?

谢谢

:start
echo This sets your default Microphone Volume to 70% and runs automatically in background after starting your Computer.

set /p anwsr=Do you wish to continue? (y/n):
If %anwsr%=="y" goto yes
If %anwsr%=="n" goto no
If %anwsr%=="Y" goto yes
If %anwsr%=="N" goto no
If %anwsr%=="" goto start && cls

:yes
cls
set /p usrnm=Enter Username:
If %usrnm%=="" goto yes && cls && echo Username must not be empty!
copy "stop_auto_audio_leveling.bat" "C:\Windows"
copy "invisble.vbs" "C:\Users\%usrnm%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
copy nircmd.exe "C:\Windows"
copy nircmdc.exe "C:\Windows"
goto no

:no
cls
echo Program will now quit. Thank you for using my installer!
pause
exit

1 个答案:

答案 0 :(得分:1)

因为在If %anwsr%=="N"中,anwsr的内容可能是N,而不是"N"

如果if命令都没有导致分支,则执行将继续:yes,因为批处理只是逐行执行命令。

解决方案:

使用If /i "%anwsr%"=="N"

其中/i表示`"不区分大小写"