Snegov1k

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет, подскажите если не сложно. Есть код (скопирован с http://www.nobat.ru/unzip.html) для The Bat! По нажатию горячей клавиши ВАТ! сохраняет вложение в нужную директорию, потом запускаем скрипт и передаем ему параметром название этой директории, скрипт проверяет на наличие архивов и запускает нужный архиватор. Нужно дописать что бы скрипт перед запуском архиватора сверялся с файликом log.txt, из той же папки, где указанно количество частей. т.е. если 3=3 то идем дальше, если нет - то стоп. Если прошли дальше и разархивировали - спросил ДА - НЕТ и если да - начал выполнять следующий скрипт (уже готовый). Если возможно помогите плз, или скажите где и что( о чем) почитать. Код: Call GoScript() 'Пример запуска скрипта '%winbootdir%\wscript.exe "E:\temp\bat\extr_att.vbs" -p"E:\temp\bat" -z"C:\nt-zip" -r"C:\WINRAR" -a"C:\ARJ" '------------------------- sub GoScript() Dim obj, i Dim Path, ZipPath, rarPath, arjPath, acePath, haPath dim oArgs ' !!!лично у меня все архиваторы сложены в одну директорию Windows Path="" ZipPath="" rarPath="" arjPath="" acePath="" haPath="" 'test.vbs -p"E:\temp\bat" -z"d:\WINDOWS" -r"d:\WINDOWS" -a"d:\WINDOWS" 'закомментированы пути для АСЕ и НА -c"" -ha"" Set oArgs = Wscript.Arguments if oArgs.Count>0 then for i=0 to oArgs.Count-1 tmpstr = Replace(LCase(oArgs(i)), chr(34), "") if instr(1, tmpstr, "-p")>0 then Path=mid(tmpstr, 3, len(tmpstr)) if instr(1, tmpstr, "-z")>0 then ZipPath=mid(tmpstr, 3, len(tmpstr)) if instr(1, tmpstr, "-r")>0 then rarPath=mid(tmpstr, 3, len(tmpstr)) if instr(1, tmpstr, "-a")>0 then arjPath=mid(tmpstr, 3, len(tmpstr)) if instr(1, tmpstr, "-c")>0 then acePath=mid(tmpstr, 3, len(tmpstr)) if instr(1, tmpstr, "-ha")>0 then haPath=mid(tmpstr, 4, len(tmpstr)) next end if if Path = "" then Path = "E:\temp\bat" 'директория куда сохранили файлики if ZipPath = "" then ZipPath = "d:\WINDOWS" ' chr(34) & ZipPath & "\pkzip25.exe" & chr(34) & " -ext -over=all " & chr(34) & Path & "\*.zip" & chr(34) & " " & chr(34) & Path & chr(34) ' рекомендую использовать Info-ZIP взять её можно здесь ftp://ftp.uu.net/pub/archiving/zip/WIN32/ ' или любую другую утилиту, которая понимает длинные имена if rarPath = "" then rarPath = "d:\WINDOWS" ' chr(34) & rarPath & "\RAR.EXE" & chr(34) & " x -o+ -y " & chr(34) & Path & "\*.rar" & chr(34) & " " & chr(34) & Path & chr(34) if arjPath = "" then arjPath = "d:\WINDOWS" ' arjPath & "\ARJ.EXE x -y " & chr(34) & Path & "\*.arj" & chr(34) & " " & chr(34) & Path & chr(34) 'if acePath = "" then acePath = "" 'if haPath = "" then haPath = "" 'Wscript.Sleep(15000) ' спим 15 секунд, покуда бат савает файлики ' это необходимо чтобы избежать возможного конфликта доступа к файлам if CheckExt(Path, "zip")=true then 'проверяем наличие zip файлов в директории Path RunCommand chr(34) & ZipPath & "\pkzip25.exe" & chr(34) & " -ext -over=all " & chr(34) & Path & "\*.zip" & chr(34) & " " & chr(34) & Path & chr(34) ' формируем командную строку end if if CheckExt(Path, "rar")=true then 'проверяем наличие rar файлов в директории Path RunCommand chr(34) & rarPath & "\RAR.EXE" & chr(34) & " x -o+ -y " & chr(34) & Path & "\*.rar" & chr(34) & " " & chr(34) & Path & chr(34) ' формируем командную строку end if if CheckExt(Path, "arj")=true then 'проверяем наличие arj файлов в директории Path RunCommand arjPath & "\ARJ.EXE x -y " & chr(34) & Path & "\*.arj" & chr(34) & " " & chr(34) & Path & chr(34) end if end sub '---------------------------- sub RunCommand(stAppName) Set obj = WScript.CreateObject("WScript.Shell") obj.run stAppName, 1, true ' запущаем программку Set obj = nothing ' MsgBox "Усё OK" end sub function CheckExt(DirName, Ext) Dim fso, f, f1, fc, s CheckExt = false Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(DirName) Set fc = f.Files Ext = LCase(Ext) For Each f1 in fc s = LCase(fso.GetExtensionName(f1.name)) if s=Ext then CheckExt = true Exit For end if Next end function | Заранее спасибо! |