Всем привет, подскажите если не сложно.
Есть код (скопирован с
http://www.nobat.ru/unzip.html) для The Bat! По нажатию горячей клавиши ВАТ! сохраняет вложение в нужную директорию, потом запускаем скрипт и передаем ему параметром название этой директории, скрипт проверяет на наличие архивов и запускает нужный архиватор.
Нужно дописать что бы скрипт перед запуском архиватора сверялся с файликом log.txt, из той же папки, где указанно количество частей. т.е. если 3=3 то идем дальше, если нет - то стоп.
Если прошли дальше и разархивировали - спросил ДА - НЕТ и если да - начал выполнять следующий скрипт (уже готовый).
Если возможно помогите плз, или скажите где и что( о чем) почитать.
Код:
[more]
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
[/more]
Зарнее спасибо!