volnistiy пишет:...
скрипт запускается раз в 10 мин с помощью планировщика и смотрит, если в течение 10 мин новый файл появился то 0, иначе создает лог, например 1.txt
...
Мне казалось, что при запуске планирощиком такое простым батником можно сделать, с таким алгоритмом:
- создать первоначальный список файлов папки - пустой текст.файл, например, c:\log\list_old.txt;
- вывод списка файлов папки камеры командой "dir" в текст.файл, например, c:\log\list_now.txt;
- формирование лога различий командой "fc" между текст.файлами c:\log\list_now.txt и c:\log\list_old.txt в файл c:\log\list_new.txt;
- т.к. в лог различий попадают лишние данные, то командой "find" оставляем в логе только строки с символами присущими только строкам файлов (например, начало года ".201" либо еще что-то).
- переименование текущего списка в старый - для будущих сравнений - "rename c:\log\list_now.txt list_old.txt";
т.е. батник приблизительно таков:
::: вывод списка только файлов папки камеры с сортировкой по дате - list_now.txt
DIR /a-d /od /-c "c:\camera\*.*" > "c:\log\list_now.txt"
::: если предыдущего списка list_old.txt еще нет - создаем пустой
IF NOT EXIST "c:\log\list_old.txt" ECHO. > "c:\log\list_old.txt"
::: сравнение файлов и вывод различий в list_new.txt
IF EXIST "c:\log\list_new.txt" DEL "c:\log\list_new.txt"
FC /L /C /N "c:\log\list_old.txt" "c:\log\list_now.txt" > "c:\log\list_new.txt"
::: усечение файла различий (поиск по наличию фразы начала года в дате файла)
::: в файл для отправки - list_send.txt
FINDSTR /C:".201" "c:\log\list_new.txt" > "c:\log\list_send.txt"
::: переименование списка для дальнейших сравнений
DEL "c:\log\list_old.txt"
REN "c:\log\list_now.txt" "list_old.txt"
Единственный глюк не удалось на тесте победить - в силу того, что при FC-сравнении в лог различий дважды попадает строка, с которой файлы начинают различаться, то в отправляемом протоколе при наличии новых файлов всегда будет дублирующаяся строка последнего файла от предыдущей проверки.
WBR. Roman