如何使代码要求用户输入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
答案 0 :(得分:0)
刚刚发现;您需要转义内部双引号。您可以尝试:
@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
由于百分号符号而导致双引号无法正确阅读。
答案 1 :(得分:0)
@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
延迟扩展变量可以帮助解决这些情况, 因为预展开的变量从字面上扩展为 源在执行之前。延迟扩展存储价值 在内存中,并在执行时直接比较该值。
为确保正确比较,可能需要延迟双方 扩展以避免特殊字符(例如双引号)。 双方可能不需要外部双引号,因为它不需要 遭受预扩展的字面语法错误问题 变量。我选择添加外部双引号。
如果使用,则可能需要禁用延迟扩展 展开时预展开的变量,可能包含 感叹号,并在此之后启用 延迟的扩展变量。
查看setlocal /?
关于enabledelayedexpansion
的使用
和disabledelayedexpansion
。