如何让代码要求用户输入cd "folder one"
然后在他们正确输入测试后接受他们的输入并转到标签:2
。
@echo off
:BEGIN
echo cd "folder one" = navigates user to folder 1.
set /p input=Insert Word:
if /i "%input%"=="cd "folder on"" goto 2
if /i not "%input%"=="cd "folder one"" & goto BEGIN
echo.
:2
echo you did it!
timeout /t 05
exit
刚刚发现;你需要逃避内部双引号。你可以试试:
@echo off
setlocal EnableDelayedExpansion
:BEGIN
echo cd "folder one" = navigates user to folder 1.
set /p input=Insert Word:
set input1=cd "folder one"
if /I !input! == !input1! (goto 2) else (goto BEGIN)
echo.
:2
echo you did it^^!
timeout /t 5
exit
在这里使用DelayedExpansion
由于百分号符号导致双引号无法正确读取。
@echo off
setlocal enabledelayedexpansion
:BEGIN
echo cd "folder one" = navigates user to folder 1.
set "item1=cd "folder one""
set /p "input=Insert Word: "
if /i "!input!" == "!item1!" (goto 2) else goto BEGIN
:2
echo you did it^^!
timeout /t 05
exit /b
变量的延迟扩展可以帮助处理这些情况,因为预扩展变量在执行之前会逐字扩展到源中。延迟扩展将值存储在内存中,并在执行时直接比较值。
为了确保正确比较,双方可能需要延迟扩展以避免双引号等特殊字符。双方可能不需要外部双引号,因为它不会遇到预扩展变量的文字语法错误问题。我选择添加外部双引号。
如果在展开时使用预扩展变量(可能包含exclaimation标记),则可能需要禁用延迟扩展,并在此之后启用扩展延迟扩展变量。
查看setlocal /?
关于使用enabledelayedexpansion
和disabledelayedexpansion
的信息。