Как использовать несколько команд поиска в цикле for в пакетном режиме? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующий код:

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
    )
)

Я просматриваю все XML-файлы, которые находятся в папке %output%, и пытаюсь найти совпадения Well-Formed and valid и <module>PDF-hul</module> в одном файле XML. Этот код работает, когда я ищу только одну команду поиска для одной переменной. Но когда я добавляю второй, я получаю синтаксическую ошибку.

Как найти обе переменные string_pdf и string1 в одном xml (не в одной строке)?

1 Ответ

0 голосов
/ 01 ноября 2018

Вам бы пришлось сбежать от && -> ^&^&, но
IMO 2-й для не обязательно просто используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...