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

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

Пользователь


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

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


я думаю что необходимо сделать ожидание побольше, корректировки там не большие проходят, так что надеюсь будет успевать все корректироваться до того как завершится процесс

конечно можно поискать вариант с более щедящим завершением работ ПО

и не понадобилось стороннее ПО, что очень радует.
Получился вод такой код

Код: Выделить весь код
@Echo Off
rem Пути
Set ReadPath=C:\INFO
Set GetPath=C:\biki\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%"

:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\read*.*" /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 (
        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:\arj\ARJ32.EXE e C:\BNK\IZM\*.arj C:\BNK\IZM\
        Echo Archive %ARJName% successfuly extracted
rem Запускаем программу
Start "" "C:\BNK\01RKC#.EXE"
Ping -n 10 127.0.0.1>nul
taskkill /IM ntvdm.exe
start C:\DAT.vbs
    ) 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
p.s. думаю теперь лучше скрипт vbs переделать на bat и вообще красота будет, простите Iska, лишний скриптик писали(хотя он не лишний, очень хороший, и выручал пока не разобрались с батником), подскажете как его на bat переделать, ну и дописать в тот общий батник

Код: Выделить весь код
Option Explicit


Dim dtCurrDate
Dim strFormattingDate

dtCurrDate = Now()
strFormattingDate = Right("0000" & Year(dtCurrDate), 4) & "." & Right("00" & Month(dtCurrDate), 2) & "." & Right("00" & Day(dtCurrDate), 2)

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists("Y:\DAT") Then
		If .FolderExists("C:\bnk") Then
			If Not .FolderExists("Y:\" & strFormattingDate) Then
				.GetFolder("Y:\DAT").Name = strFormattingDate
				.CopyFolder "C:\bnk\DAT", "Y:\DAT", True
			Else
				WScript.Echo "Folder [Y:\" & strFormattingDate & "] already exists"
			End If
		Else
			WScript.Echo "Folder [C:\bnk] not found"
		End If
	Else
		WScript.Echo "Folder [Y:\DAT] not found"
	End If
End With

WScript.Quit 0

Последний раз редактировалось Anufriev, 23-05-2012 в 15:02.


Отправлено: 14:17, 23-05-2012 | #23