Обычный способ чтения нескольких файлов параллельно описан в этот ответ и состоит из чтения первого файла с помощью команды for /F
и других файлов с помощью перенаправленной команды set /P
( с). Например:
@echo off
setlocal EnableDelayedExpansion
rem First file is read with FOR /F command
rem Second file is read via redirected stdin
< after.txt (for /F %%G in (before.txt) do (
rem Read next line from after.txt
set /P "variable2="
rem Compare first token of both files
for /F %%I in ("!variable2!") do (
if /I %%G==%%I (
echo %%G %%I md5sum check is ok
)
)
))
Обратите внимание, что стандартное поведение for /F
- получение первого токена, разделенного пробелом, поэтому опция "tokens=1 delims= "
не требуется ...
Однако, если файлы небольшие, вы можете использовать более простой метод:
@echo off
for /F "tokens=1,2 delims=: " %%F in ('findstr /N "^" before.txt') do (
for /F "tokens=1,2 delims=: " %%H in ('findstr /N "^" after.txt') do (
if %%F equ %%H if /I %%G == %%I (
echo %%G %%I md5sum check is ok
)
)
)
В этом методе команда findstr /N "^"
используется для перечисления всех строк в обоих файлах, поэтому команда if %%F equ %%H
используется для синхронизации (выберите одинаковые ) строк в обоих файлы. Этот метод неэффективен, поэтому он займет больше времени, если файлы не маленькие ...