查找字符串是否包含多个不同的子字符串

时间:2019-06-29 21:30:09

标签: windows batch-file

我正在遍历文本文档,以将URL分配给下载程序。如果该URL包含某些路径(例如/channels/),则在下载前需要为其分配不同的设置。

for /F "tokens=*" %%A in (batch.txt) do (
    echo %%A|find "/channel/"|find "/user/"
    if errorlevel 0 echo %%A
    else if echo %%A|find "/watch?"
    if errorlevel 0 echo %%A
    else if echo %%A|find "/playlist?"
    if errorlevel 0 echo %%A
    else echo FAIL
)

这不起作用,正在回显文件的每一行。我知道我的if else结构是错误的,但是我不知道正确的语法。我还需要忽略以#开头的行。我该怎么办?

1 个答案:

答案 0 :(得分:0)

javascript

您需要根据自己的情况更改@ECHO OFF SETLOCAL SET "sourcedir=U:\sourcedir" SET "filename1=%sourcedir%\q56820987.txt" FOR /f "tokens=*eol=#" %%a IN (%filename1%) DO ( ECHO %%a|FIND "/channel/" >NUL IF NOT ERRORLEVEL 1 ECHO found "/channel/" IN %%a ECHO %%a|FIND "/watch?" >NUL IF NOT ERRORLEVEL 1 ECHO found "/watch?" IN %%a ECHO %%a|FIND "/playlist?" >NUL IF NOT ERRORLEVEL 1 ECHO found "/playlist?" IN %%a ) GOTO :EOF 的设置。清单使用适合我系统的设置。

我使用了一个名为sourcedir的文件,其中包含一些虚拟数据用于测试。

除了错误的if / else语法外,如果q56820987.txt为n 或大于n ,则IF ERRORLEVEL n为TRUE。 errorlevel因此始终为true。 IF ERRORLEVEL 0是对errorlevel = 0的测试。 IF NOT ERRORLEVEL 1也是如此,除了前者可以在一个块内使用而后者不能使用。