检查用户输入是否包含子字符串

Check if userinput contains substring

您好,请帮我解决这个问题! 我想检查用户输入 URL 是否包含定义的 SUBSTRINGIf yes 我想 GOTO LONG else GOTO SHORT

谢谢!

 @echo off


setlocal enabledelayedexpansion enableextensions

SET /P "URL= Input the link of the video: "



SET "SUBSTRING=?filter=archives&sort=time"




ECHO !URL! | FINDSTR /C:"!SUBSTRING!">nul
IF ERRORLEVEL 1 (GOTO SHORT) ELSE GOTO LONG


:LONG
SET LINK=1
ECHO THIS IS A LONG LINK
ECHO "THE LINK NUMBER IS %LINK%"
ECHO !URL!
GOTO END



:SHORT
SET LINK=0
ECHO THIS IS A SHORT LINK
ECHO "THE LINK NUMBER IS %LINK%"
ECHO !URL!
GOTO END


:END
pause

正确使用双引号有助于解决您的一些问题。如果您也为回显使用引号,则无需使用延迟扩展。

@echo off

SET /P "URL=Input the link of the video:"

SET "SUBSTRING=?filter=archives"

ECHO "%URL%"|FINDSTR /C:"%SUBSTRING%">nul
IF ERRORLEVEL 1 (GOTO SHORT) ELSE GOTO LONG

:LONG
SET LINK=1
ECHO THIS IS A LONG LINK
ECHO "THE LINK NUMBER IS %LINK%"
GOTO END

:SHORT
SET LINK=0
ECHO THIS IS A SHORT LINK
ECHO "THE LINK NUMBER IS %LINK%"
GOTO END

:END
pause

更新显示批处理文件的执行。

C:\Users\Squashman\Desktop>test.bat
Input the link of the video:https://www.twitch.tv/videos/578427308?filter=archives&sort=time
THIS IS A LONG LINK
"THE LINK NUMBER IS 1"
Press any key to continue . . .

这是工作代码。我现在将我遇到的问题说出来,以便其他人从中学习

  1. 必须不启用setlocal enabledelayedexpansion
  2. 我必须在 SET 命令的变量周围使用引号
  3. 因为我禁用了 delayedexpansion 必须 使用百分比而不是感叹号当我以后想在命令中使用变量时

如果我错了请纠正我,但这是我在这些人的帮助下以及我自己通过反复试验得出的结论 我列出了这个列表并更新了代码,所以如果像我这样的新手遇到困难,他们可以看看这个 post。 再次感谢大家!

@echo off

SET /P "URL=Input the link of the video:"

SET "SUBSTRING=?filter=archives"

ECHO "%URL%"|FINDSTR /C:"%SUBSTRING%">nul
IF ERRORLEVEL 1 (GOTO SHORT) ELSE GOTO LONG

:LONG
SET LINK=1
ECHO THIS IS A LONG LINK
ECHO "THE LINK NUMBER IS %LINK%"
GOTO END

:SHORT
SET LINK=0
ECHO THIS IS A SHORT LINK
ECHO "THE LINK NUMBER IS %LINK%"
GOTO END

:END
pause