Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Option Explicit
Dim arg
Dim optind
 
'Справка по параметрам
If WScript.Arguments.Count < 1 Then
  WScript.Echo "Синтаксис: zip.vbs [-a|-e] zip-файл [файлы...]"
  WScript.Echo "  -a - добавить файлы в архив"
  WScript.Echo "  -e - распаковать архив"
  WScript.Echo "Скрипт пока может обрабатывать только полные"  
  WScript.Echo "пути, так как находится в стадии разработки."
  WScript.Quit
End If
 
'Обработчик аргументов
arg = WScript.Arguments(optind)
 
Select Case LCase(arg)
  Case "-a"
    optind = optind + 1
    Call MakeZIP()
  Case "-e"
    optind = optind + 1
    Call ExtractZIP()
End Select
WScript.Quit
 
'Обработчик создания zip-архива
Sub MakeZIP()
 
Dim fso, wShell, Shell, n, IE, ZIPFile, file, folder, folderItem, dFolder
Dim ZIPHeader:ZIPHeader = "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
 
'Проверка наличия параметров после ключа архивирования
If WScript.Arguments.Count < optind + 2 Then
  WScript.Echo "Неверные параметры командной строки."
  WSript.Quit
End If
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set wShell = CreateObject("WScript.Shell")
Set Shell = CreateObject("Shell.Application")
 
For n = 0 to 9
  For Each IE in Shell.Windows
    If Not IE.Busy Then
      If IE.ReadyState = 4 Then
        If InStr(TypeName(IE.Document), "IShellFolderViewDual") = 1 Then
          Exit For
        End If
      End If
    End If
  Next
  If Not IsEmpty(IE) Then Exit For
  If n = 0 Then CreateObject("WScript.Shell").Run "explorer.exe", 0, true
  WScript.Sleep 500
Next
 
If IsEmpty(IE) Then
  WScript.Echo "Непредвиденная ошибка."
  WScript.Quit
End If
 
Set Shell = IE.Document.Application
 
ZIPFile = fso.GetAbsolutePathName(WScript.Arguments(optind))
'Валидация расширения архива
If UCase(fso.GetExtensionName(ZIPfile)) <> "ZIP" Then
  WScript.Echo "Неверное расширение файла.", fso.GetExtensionName(ZIPFile)
  WScript.Quit
End If
'Проверяем существует ли архив
If Not fso.FileExists(ZIPfile) Then
  fso.CreateTextFile(ZIPfile, false).Write ZIPHeader
End If
 
Set dFolder = Shell.NameSpace(ZIPfile)
 
'Добавляем файлы в архив
For optind = optind + 1 to WScript.Arguments.Count - 1
  file = fso.GetAbsolutePathName(WScript.Arguments(optind))
  Set folder = Shell.NameSpace(fso.GetParentFolderName(file))
  Set folderItem = folder.ParseName(fso.GetFileName(file))
  If folderItem Is Nothing Then
    WScript.Echo WScript.Arguments(optind), "Неверный параметр."
    WScript.Quit
  End If
  dFolder.CopyHere folderItem
Next
End Sub
 
'Обработчик распаковки zip-архива
Sub ExtractZIP()
 
Dim fso, Shell, ZIPFile, folder, folderItem, dFolder
 
'Проверка наличия параметров после ключа распаковки
If WScript.Arguments.Count < optind + 1 Then
  WScript.Echo "Неверные параметры командной строки."
  WScript.Quit
End If
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("Shell.Application")
 
ZIPfile = fso.GetAbsolutePathName(WScript.Arguments(optind))
'Валидация расширения архива
If UCase(fso.GetExtensionName(ZIPfile)) <> "ZIP" Then
  WScript.Echo "Неверное расширение файла.", fso.GetExtensionName(ZIPfile)
  WScript.Quit
End If
 
Set folder = Shell.NameSpace(ZIPfile)
Set dFolder = Shell.NameSpace(fso.GetAbsolutePathName(""))
 
'Извлекаем файлы из архива
If WScript.Arguments.Count < optind + 2 Then
  dFolder.CopyHere folder.Items
Else
  For optind = optind + 1 to WScript.Arguments.Count - 1
    Set folderItem = folder.ParseName(Wscript.Arguments(optind))
    If folderItem Is Nothing Then
      WScript.Echo WScript.Arguments(optind), "Лишний параметр."
      WScript.Quit
    End If
    dFolder.CopyHere folderItem
  Next
End If
End Sub

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:36 04-07-2010 | Исправлено: ComradG, 19:36 04-07-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru