Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Anufriev, установите приемлемый для вас таймаут сканирования, я по умолчанию 10 секунд поставил. Чтобы окошками черными прыгающими бухгалтеров не стращать, запускайте этот батник свернутым или вообще без видимого окна (поищите, есть утилиты для этого).
Команды распаковки arj-архива вставлять не стал, сами вставите, т.к. я не знаю, какой у вас архиватор там для этих целей.
Батник будет висеть и раз в %Timeout% секунд проверять наличие файлов\обрабатывать их.

Код: Выделить весь код
@Echo Off
rem Пути
Set ReadPath=C:\INFO
Set GetPath=C:\БИКИ\get
Set ARJPath=C:\BNK\IZM
rem Таймаут проверки файлов, в секундах
Set Timeout=10

Set /A Timeout+=1
If Not Exist "%ReadPath%" Echo Error - Directory not found&Exit /B 1
rem Подготавливаем структуру директорий
If Not Exist "%GetPath%" MD "%GetPath%"
If Not Exist "%ReadPath%\old" MD "%ReadPath%\old"

:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\read*.001" /B') Do (
    Set NFOName=%%F
rem Поиск в найденном строки с архивом 
    For /F "delims=" %%S In ('Findstr /R /I /C:"\<*.arj\>" "%ReadPath%\%%F"') Do (
rem Разбор строки на составляющие, вычленение имени архива
        For %%A In (%%S) Do (
            Echo %%A|Find /I "arj">nul&&Set ARJName=%%A
        )
    )
)
If Defined ARJName (
    Echo Found %NFOName%, processing...
rem Создаем get-файл
    Echo get mfo %ARJName%>"%GetPath%\get.txt"
rem Переименовываем обработанный файл, чтобы исключить повторное прочтение
rem Если в системе установлен другой формат даты - исправить.
    For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
        Move "%ReadPath%\%NFOName%" "%ReadPath%\old\%%C.%%B.%%A_%NFOName%"
    )
:WaitForARJ
rem Распаковка архива, или ожидание, если он ещё не появился
    If Exist "%ARJPath%\%ARJName%" (
        Здесь вставьте команды распаковки архива
        Echo Archive %ARJName% successfuly extracted
    ) Else (
        Echo Waiting for ARJ in %ARJPath%
        Ping -n %Timeout% 127.0.0.1>nul
        GoTo WaitForARJ
    )
)
rem Уход на новую итерацию после таймаута
Cls&Echo Scanning %ReadPath%...
Ping -n %Timeout% 127.0.0.1>nul
GoTo Loop

Последний раз редактировалось Anonymоus, 21-05-2012 в 22:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:25, 21-05-2012 | #4