добрый день!
есть батник, который читает текстовый файл и вытаскивает из него имя архива, которое необходимо поместить в другой текстовый файл
все работает хорошо, если бы не одно "но", в текстовом файле есть несколько 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