如何在for循环中批量使用多个查找命令?

时间:2018-11-01 13:46:26

标签: batch-file for-loop find

我有以下代码:

set "string_pdf=<module>PDF-hul</module>"
set string1=Well-Formed and valid
set /a loop100=0

for /f "tokens=*" %%i in ('dir /a-d /b /s %output%') do (
    for /f "tokens=3 delims=>/<" %%p in ('find  "%string_pdf%" "%%i" && find "%string1%" "%%i" ') do (
        echo %%~ni >> %output%\pdf_hul.txt
        set /a loop100+=1
    )
)

我要遍历%output%文件夹中的所有XML,并尝试在一个xml文件中查找Well-Formed and valid<module>PDF-hul</module>的同时出现。当我仅使用一个find命令搜索一个变量时,此代码有效。但是,当我添加第二个时,会出现语法错误。

如何在一个xml中找到变量string_pdfstring1(不在一行中)?

1 个答案:

答案 0 :(得分:2)

您必须转义&&-> ^&^&,但是
不需要IMO 2nd,只需使用带有两个字符串的findstr和
成功&&时执行条件执行,并禁止findstr的任何输出

:: Q:\Test\2018\11\01\SO_53102597.cmd
@Echo off
set output=X:\Path
set "string_pdf=<module>PDF-hul</module>"
set string1=Well-Formed and valid
set /a loop100=0

for /f "tokens=*" %%i in ('dir /a-d /b /s "%output%*.xml"') do (
    findstr /IM /c:"%string_pdf%" "%%i" >NUL 2>&1 && (
        findstr /IM /c:"%string1%" "%%i" >NUL 2>&1 && (
            echo %%~ni >> %output%\pdf_hul.txt
            set /a loop100+=1
        )
    )
)
set loop