检查userinput是否包含子字符串

时间:2020-03-31 19:57:50

标签: string batch-file if-statement cmd findstr

您好,请帮助我! 我想检查用户输入的 URL 是否包含定义的 SUBSTRING 如果是,我想 GOTO LONG 其他 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

2 个答案:

答案 0 :(得分:1)

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

@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 :(得分:-1)

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

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

如果我错了,请纠正我,但是那是我在这些人的帮助下,通过尝试和错误独自解决的问题 我列出了清单并更新了代码,因此,如果像我这样的新手陷入困境,他们可以看看这篇文章。 再次谢谢你们!

@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