Если надо идентичность файлов
Код:
@Echo Off
Cls
Set "FileIn=Z:\Soft_In\1.txt"
Set "FileOut=Z:\Soft_In\2.txt"
Set "Reestr=2, 5, 7, 15, 17, 19, 23, 31, 35"
Set /A Tsec=10
Set "SR=="
For %%i In (%Reestr%) Do Call Set "SR=%%SR%%%%i="
:Begin1
Call :NoFile "%FileIn%" %Tsec% ||GoTo :Begin1
3<"%FileIn%" (Set /p SIn=<&3)
Call :Found "%SIn%" "%SR%" %Tsec% ||GoTo :Begin1
>nul Move /Y "%FileIn%" "%FileOut%"
Set "SInNew=%SIn%"
:Begin2
Call :NoFile "%FileIn%" %Tsec% ||GoTo :Begin2
3<"%FileIn%" (Set /p SInNew=<&3)
If "%SInNew%"=="%SIn%" Echo +++ Файлы "%FileIn%" "%FileOut%" одинаковые. Что дальше - не знаю :) &Pause &Exit /b 0
If Not "%SInNew%"=="%SIn%" Echo --- Файлы "%FileIn%" "%FileOut%" разные. Что дальше - не знаю :) &Pause &Exit /b 1
GoTo :Eof
:NoFile
If Not Exist %1 (
Echo --- Нет файла %1
Timeout /T %~2
Exit /B 1 &Rem Файла нет
)
Exit /B 0
:Found
For %%i In (%~1) Do >Nul (Echo %~2|Find "=%%i=")||(
Echo --- Нет %%i в реестре значений
Timeout /T %~3
Exit /B 1 &Rem Что-то не найдено в реестре значений
)
Exit /B 0
Если надо одинаковые числа в файлах вне зависимости от порядка
Заменить выделенный кусок предыдущего кода
Код:
:Begin2
Call :NoFile "%FileIn%" %Tsec% ||GoTo :Begin2
Set "SRnew=="
For %%i In (%SIn%) Do Call Set "SRnew=%%SRnew%%%%i="
3<"%FileIn%" (Set /p SInNew=<&3)
Call :Found "%SInNew%" "%SRnew%" 0
If "%ErrorLevel%"=="0" Echo +++ В файлах "%FileIn%" "%FileOut%" одинаковые числа. Что дальше - не знаю :) &Pause &Exit /b 0
If Not "%ErrorLevel%"=="0" Echo --- В файлах "%FileIn%" "%FileOut%" числа отличаются. Что дальше - не знаю :) &Pause &Exit /b 1
Я сделал таймаут (у меня 10 сек) для ожидания 1 файла, если его нет или если значения не содержатся в реестре.