Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   чтение такстового файла и создание текстового с частичным содержанием прочтеного вайл (http://forum.oszone.net/showthread.php?t=237312)

Anufriev 26-06-2012 07:54 1940563

чтение такстового файла и создание текстового с частичным содержанием прочтеного вайл
 
добрый день!

есть батник, который читает текстовый файл и вытаскивает из него имя архива, которое необходимо поместить в другой текстовый файл

все работает хорошо, если бы не одно "но", в текстовом файле есть несколько arj архивов, а этот батник видит только один архив

пример текста в файле:
читать дальше »
‚ ѓ“ Ѓ**Є* ђ®ббЁЁ Ї® Ќ®ў®бЁЎЁабЄ®© ®Ў«*бвЁ ®Ў*®ў«Ґ*л бЇа*ў®з*ЁЄЁ:
EE_AGENT.DBF ў б®бв*ўҐ ee_dat.arj
EE_BKVID.DBF ў б®бв*ўҐ ee_dat.arj
EE_SR.DBF ў б®бв*ўҐ ee_dat.arj
EE_SRTIP.DBF ў б®бв*ўҐ ee_dat.arj
EE_SRVID.DBF ў б®бв*ўҐ ee_dat.arj
EE_STAKO.DBF ў б®бв*ўҐ ee_dat.arj
HDRUS_TU.DBF ў б®бв*ўҐ hd_list.arj
HD_LIST.DBF ў б®бв*ўҐ hd_list.arj
HD_OKATO.DBF ў б®бв*ўҐ hd_list.arj
PK_SRNET.DBF ў б®бв*ўҐ ee_dat.arj
REGFAULT.dbf ў б®бв*ўҐ regfault.arj
ЋЎ*®ўЁвҐ ‚*иЁ бЇа*ў®з*ЁЄЁ Ќ‘€ ў Џ’Љ Џ‘„ Ё§ Є*в*«®Ј* public


что необходимо дописать в батник, что бы он выдавал файл с таким содержанием:
читать дальше »
get public regfault.arj
get public ee_dat.arj
get public hd_list.arj


и ждал поступление всех архивов, только после этого начинал их распаковывать?

собственно сам батник:
Код:

@Echo Off
rem Пути
Set ReadPath=D:\test
Set GetPath=D:\test\get
Set ARJPath=D:\test\arj
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%"

:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\upd_nsi*.*" /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 public %ARJName%>"%GetPath%\get.txt"
rem Перемещаем обработанный файл, чтобы исключить повторное прочтение
rem Если в системе установлен другой формат даты - исправить.
    For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
        If Not Exist "%ReadPath%\%%C.%%B.%%A" MD "%ReadPath%\%%C.%%B.%%A"
        Move "%ReadPath%\%NFOName%" "%ReadPath%\%%C.%%B.%%A\%NFOName%"
    )
:WaitForARJ
rem Распаковка архива, или ожидание, если он ещё не появился
    If Exist "%ARJPath%\%ARJName%" (
        c:\arj32\ARJ32.EXE e D:\test\arj\*.arj D:\test\arj\
        Echo Archive %ARJName% successfuly extracted
    ) Else (
        Echo Waiting for ARJ in %ARJPath%
        Ping -n %Timeout% 127.0.0.1>nul
        GoTo WaitForARJ
                del D:\test\arj\*.arj
    )
)
rem Уход на новую итерацию после таймаута
Cls&Echo Scanning %ReadPath%...
Ping -n %Timeout% 127.0.0.1>nul
GoTo Loop


Anufriev 28-06-2012 11:52 1941938

товарищи, скажите, это не возможно сделать по средствам бат или это сложно сделать или я просто не понятно описал проблемку?


Время: 17:00.

Время: 17:00.
© OSzone.net 2001-