Ввести if
в for
в общем случае просто:
for ... do (
if ... (
...
) else if ... (
...
) else (
...
)
)
Цикл for
, который перебирает строки, может быть записан с помощью ключа /f
:
for /f "delims=" %%s in (*.txt) do (
...
)
Регулярные выражения предоставляются findstr
. Он будет соответствовать stdin
, если входной файл не указан. Вы можете перенаправить вывод в NUL
, чтобы он не отображал найденную строку, и просто используйте ее errorlevel
, чтобы увидеть, соответствует ли она или нет (0 означает совпадение, а не 0 означает, что нет). И вы можете разделить строку, используя /f
снова. Итак:
set count=0
for /f "delims=" %%s in (foo.txt) do (
echo %%s | findstr /r xxxx > NUL
if errorlevel 1 (
rem ~~~ Didn't match xxxx ~~~
echo %%s | findstr /r yyyy > NUL
if errorlevel 1 (
rem ~~~ Didn't match yyy ~~~
for /f "delims=; tokens=1,*" %%a in ('echo %%s') do (
set array1[!count!]=%%a
set array2[!count!]=%%b
set /a count+=1
)
)
) else (
echo XXX is found
)
)