Показать полную графическую версию : [решено] Мониторить папку
AlexVong
29-11-2011, 21:45
Подскажите, как реализовать мониторинг за определенной папкой(в которой сохраняются отчеты в формате txt), то есть при появлении в ней файлов - переносить их в другую папку присвоив произвольное имя (например Дата&время.txt)? Пробывал батником, но он переносит файлы не дождавшись когда их полностью создаст программа.
AlexVong, в планировщик поставьте выполнение каждые X минут.
Loran_rus
30-11-2011, 09:40
Vadikan
Скорее всего проблема не в организации копирования по времени, а в том что программа сначала создает файл и потом в течении какого то периода времени дописывает в него данные
AlexVong
Как раз при помощи переименования и можно выяснить в CMD/BAT скрипте занят файл приложением или уже нет
Как в bat файле дождаться появления определенного файла.
Иногда необходимо при появлении определенного файла в папке выполнить какое-то действие. Чтобы организовать проверку появления файла в папке можно использовать следующий пакетный файл
:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
notepad
Такой пакетный файл будет проверять с интервалом 10 секунд наличие в корне диска С файла 1.txt и когда файл 1.txt появится, будет выполнено действие, указанное после метки go, т.е. в этом примере будет запущен Блокнот.
Утилита sleep свободно распространяется в составе Resource Kit.
Если файл 1.txt большого размера и копируется откуда-то, то может получится так, что пакетный файл проверит его наличие в то время, как файл еще не скопировался или занят другим приложением. В таком случае, попытка выполнить какие-то действия с файлом 1.txt приведет к ошибке. Чтобы этого не произошло пакетный файл можно модифицировать следующим образом
:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
rename c:\1.txt 1.txt
if not errorlevel 0 goto go
del c:\1.txt
Когда файл 1.txt скопировался на диск С не полностью, либо занят другим приложением, попытка его переименовать вызовет ошибку и цикл будет повторяться до тех пор, пока файл не скопируется полностью либо не будет освобожден. После того, как команда rename c:\1.txt 1.txt будет выполнена без ошибки (т.е. файл свободен), то с ним можно выполнять любые действия. В последнем примере это его удаление.
Источник -> (http://forum.xakep.ru/m_1512627/tm.htm) Аккуратней у меня на этот линк ругается антивирус на BV:Agent-HE [Trj]
Sat_Kelman
30-11-2011, 12:55
У нас стоит Cron и каждый час запускает батник, который проверяет наличие файлов в папке.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.