Имеется папка в которую время от времени падают файлы, и есть скрипт который их обрабатывает (файл и его атрибуты при этом не изменяется, переименовывать/перемещать тоже нельзя). Каждый из файлов нужно прогнать через скрипт только один раз. Имена файлов не повторяются.
Задача, конечно, тупая, но меня, похоже, заклинило.
CMD/BAT - [решено] Обнаружение новых файлов в папке
-
megaloman
Re: CMD/BAT - [решено] Обнаружение новых файлов в папке
Держать файл в который записывать имена уже обработанных файлов.
Что то типа - if not in(файл) bla bla bla
Что то типа - if not in(файл) bla bla bla
-
megaloman
Re: CMD/BAT - [решено] Обнаружение новых файлов в папке
Создадим где-нибудь служебную папку (лишь бы были там права на запись), будем просматривать ваш инбокс (папка в которую время от времени падают файлы) и по мере обработки в нём файлов будем создавать в служебной папке служебные файла с именами обработанных файлов с добавлением расширения .log для определённости, чтобы не путать с исходными. Если в этой служебной папке уже имеется служебный файл с соответствующим именем, обработку не вызываем.
Код:
Код:
Код: Выделить всё
@Echo off
cls
Set "In=Z:\Papka"
Set "Log=Z:\Papka\Log"
Md "%Log%" 2>nul
for /f "usebackq Delims=" %%i in (`dir "%In%\*.*" /b /A:-d 2^>nul`) Do (
If Not Exist "%Log%\%%i.log" (
Md "%Log%" >"%Log%\%%i.log" 2>nul
Call :Obrabotka "%In%" "%%i"
)
)
pause
GoTo :Eof
:Obrabotka
Echo %1 %2-
Elven
Re: CMD/BAT - [решено] Обнаружение новых файлов в папке
megaloman, моложе. Накапливаются не бесконечно, периодически удаляются все вместе. Но вот удаляются они в довольно рандомное время...
NickM, тоже думал в эту сторону.
megaloman, весьма отлично. спасибо.
NickM, тоже думал в эту сторону.
megaloman, весьма отлично. спасибо.
-
megaloman
Re: CMD/BAT - [решено] Обнаружение новых файлов в папке
Elven, Вот еще вариант в сторону NickM
[spoiler]Код: [/spoiler]
Создаём где-нибудь лог-файл (увы, если имя этого файла необходимо взять в кавычки, у меня не получается) и с помощью опции Exclude команды Xcopy получаем список необработанных файлов. Имена обработанных записываем в лог.
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo off
cls
Set "In=Z:\Papka"
Set "Log=Z:\Papka\Log"
If Not Exist %Log%\Log.txt (
Md "%Log%" 2>nul
Md "%Log%" >"%Log%\Log.txt" 2>nul
)
for /f "usebackq Delims=" %%i in (`xcopy /L /EXCLUDE:%Log%\Log.txt "%In%\*.*" "%Log%\" 2^>nul`) Do (
If Exist "%%i" (
Echo %%~i >>%Log%\Log.txt
Call :Obrabotka "%%i"
)
)
pause
GoTo :Eof
:Obrabotka
Echo %1Создаём где-нибудь лог-файл (увы, если имя этого файла необходимо взять в кавычки, у меня не получается) и с помощью опции Exclude команды Xcopy получаем список необработанных файлов. Имена обработанных записываем в лог.
-
megaloman
Re: CMD/BAT - [решено] Обнаружение новых файлов в папке
Elven, если файлы периодически удаляются все вместе в довольно рандомное время... то в первом решении надо озаботиться тем, чтобы вспомогательные файлы не накапливались бесконечно. Вот первое решение с добавленным куском на синхронизацию имеющихся и вспомогательных файлов.
Код:
Код:
Код: Выделить всё
@Echo off
cls
Set "In=Z:\Papka"
Set "Log=Z:\Papka\Log"
Md "%Log%" 2>nul
for /f "usebackq Delims=" %%i in (`dir "%In%\*.*" /b /A:-d 2^>nul`) Do (
If Not Exist "%Log%\%%i.log" (
Md "%Log%" >"%Log%\%%i.log" 2>nul
Call :Obrabotka "%In%" "%%i"
)
)
for /f "usebackq Delims=" %%i in (`dir "%Log%\*.log" /b /A:-d 2^>nul`) Do (
If Not Exist "%In%\%%~ni" Del "%Log%\%%i"
)
pause
GoTo :Eof
:Obrabotka
Echo %1 %2