Имя: Пароль:
IT
Админ
zip архивирование стандартными средствами windows xp
0 IVIuXa
 
29.10.08
11:10
Как из коммандной строки стандартными средствами заархивировать папку ?
1 IVIuXa
 
29.10.08
11:11
видимо что то с rundll
2 ДенисЧ
 
29.10.08
11:11
когда узнаешь, напиши статью в здешнюю базу знаний...
3 smaharbA
 
29.10.08
11:11
средствами какой командной строки ?
4 IVIuXa
 
29.10.08
11:13
(3)
cmd
5 smaharbA
 
29.10.08
11:27
как написать скрипт знаю
6 ДенисЧ
 
29.10.08
11:27
(5) Открыть нотепад и понажимать кнопки? :-)
7 IVIuXa
 
29.10.08
11:33
(5)
RunDll32.exe zipfldr.dll,RouteTheCall c:\papka
а как сделать papka.zip ?
8 smaharbA
 
29.10.08
11:40
(7) создать пустой зип array(80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) и записывать в него как в обычную папку
9 smaharbA
 
29.10.08
11:41
лениво писать скрипт для командной строки, вот тебе код адинес, разбирай

//*******************************************

Процедура Сформировать()
   Архив="c:\temp\Моя новая папка.zip";
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   ФСО=СоздатьОбъект("scripting.filesystemobject");
   Файл=ФСО.opentextfile(Архив,2,-1);
   Скрипт.AddObject("Файл",Файл);
   Скрипт.Eval("Файл.write(String.fromCharCode(80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))");
   Файл.Close();
   Шел=СоздатьОбъект("shell.application");
   Папка=Шел.namespace(Архив);
   Папка.copyhere("c:\temp\tmp\");
   Стр="Создаем архив - "+Архив;
   Пока (ВвестиСтроку(Стр,Стр,СтрДлина(Стр),0,1)<>0) и (ФС.СуществуетФайл(Архив)=0) Цикл
   КонецЦикла;
КонецПроцедуры


//*******************************************

Функция ПросмотрРекурс(Архив="",Путь="",Сп)
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   Шел=СоздатьОбъект("shell.application");
   Папка=Шел.namespace(Архив+"\"+Путь);
   Скрипт.AddObject("Папка",Папка);
   Вложения=Скрипт.Eval("new Enumerator(Папка.Items())");
   Пока Вложения.atEnd(0)=0 Цикл
       Сп.ДобавитьЗначение(Вложения.item(0).path);
       Если Вложения.item(0).IsFolder=-1 Тогда
           ПросмотрРекурс(Архив,Вложения.item(0).path,Сп);
       КонецЕсли;
       Вложения.moveNext(0);
   КонецЦикла;
КонецФункции

Функция Просмотр()
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   Архив="c:\temp\Моя новая папка.zip";
   Путь="tmp";
   Сп=СоздатьОбъект("СписокЗначений");
   ПросмотрРекурс(Архив,Путь,Сп);
   СпВыб=СоздатьОбъект("СписокЗначений");
   Для к=1 По Сп.РазмерСписка() Цикл
       ПутьФайла=Сп.ПолучитьЗначение(к);
       Расширение=СтрЗаменить(ПутьФайла,".","
       |");
       Расширение=СтрПолучитьСтроку(Расширение,СтрКоличествоСтрок(Расширение));
       Расширение=?(Расширение=ПутьФайла,"",Расширение);
       Если Расширение="vbs" Тогда
           Шел=СоздатьОбъект("Shell.Application");
           Папка=Шел.NameSpace(Архив);
           Файл=Папка.ParseName(ПутьФайла);
           Темп=Шел.NameSpace(КаталогВременныхФайлов());
           ФС.УдалитьФайл(КаталогВременныхФайлов()+СтрЗаменить(Файл.path,"/","\"));
           Темп.CopyHere(Файл);
           СпВыб.ДобавитьЗначение(КаталогВременныхФайлов()+СтрЗаменить(Файл.path,"/","\"));
       КонецЕсли;
   КонецЦикла;
   Текст=СоздатьОбъект("Текст");
   Для к=1 По СпВыб.РазмерСписка() Цикл
       Текст.Открыть(СпВыб.ПолучитьЗначение(к));
       Сообщить("<<----"+СпВыб.ПолучитьЗначение(к)+"---->>");
       Для н=1 По Текст.КоличествоСтрок() Цикл
           Сообщить(Текст.ПолучитьСтроку(н));
       КонецЦикла;
       Сообщить("<<-------->>");
       Текст.Очистить();
       ФС.УдалитьФайл(СпВыб.ПолучитьЗначение(к));
   КонецЦикла;
КонецФункции    // Просмотр
10 Moriarti
 
29.10.08
12:01
Скрипт для командной строки:

//************** ZIP.VBS start at next line

' ZIP.VBS manipulates ZIP file in command line.
' Usage: CScript.exe ZIP.VBS [-d|-e|-v] ZIPfile [files...]
'    CScript.exe ZIP.VBS -a archive.zip 1.txt

Option Explicit
Dim arg
Dim optind

If WScript.Arguments.Count<1 Then
WScript.Echo "Usage: CScript.exe ZIP.VBS [-d|-e|-v] ZIPfile [files...]"
WScript.Quit
End If
arg=WScript.Arguments(optind)
Select Case LCase(arg)
Case "-a","-c"
optind=optind+1
Call MakeZIP()
Case "-d"
optind=optind+1
Call DeleteZIP()
Case "-e"
optind=optind+1
Call ExtractZIP()
Case "-v","-l"
optind=optind+1
Call ListZIP()
Case Else
If optind=WScript.Arguments.Count-1 Then
 Call ListZIP()
Else
 Call MakeZIP()
End If
End Select
WScript.Quit

Sub MakeZIP()
Dim fso
Dim wShell
Dim Shell
Dim n
Dim ie
Dim ZIPfile
Dim ZIPdata:ZIPdata="PK" & Chr(5) & Chr(6) & String(18,0)
Dim file
Dim Folder
Dim FolderItem
Dim dFolder

If WScript.Arguments.Count<optind+2 Then
WScript.Echo "Arguments Missing."
WScript.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 100
Next
If IsEmpty(ie) Then
WScript.Echo "Failed"
WScript.Quit
End If
Set Shell=ie.Document.Application

ZIPfile=fso.GetAbsolutePathName(WScript.Arguments(optind))
If UCase(fso.GetExtensionName(ZIPfile))<>"ZIP" Then
WScript.Echo "Invalid Extension Name -",fso.GetExtensionName(ZIPfile)
WScript.Quit
End If
If Not fso.FileExists(ZIPfile) Then
fso.CreateTextFile(ZIPfile,False).Write ZIPdata
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),"- Not Found."
 WScript.Quit
End If
dFolder.CopyHere FolderItem
Next
End Sub

Sub ListZIP()
Dim fso
Dim Shell
Dim ZIPfile
Dim Folder
Dim FolderItem
Dim k
Dim COL:COL=8
Dim cols
ReDim cols(COL)
Dim rows
Dim j

If WScript.Arguments.Count<optind+1 Then
WScript.Echo "Arguments Missing."
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 "Invalid Extension Name -",fso.GetExtensionName(ZIPfile)
WScript.Quit
End If
Set Folder=Shell.NameSpace(ZIPfile)
ReDim rows(Folder.Items.Count)
For k=0 To COL
cols(k)=Folder.GetDetailsOf(,k)
Next
j=0
rows(j)=Join(cols,vbTab)
For Each FolderItem In Folder.Items
For k=0 To COL
 Cols(k)=Folder.GetDetailsOf(FolderItem,k)
Next
j=j+1
rows(j)=Join(cols,vbTab)
Next
WScript.Echo Join(rows,vbCRLF)
End Sub

Sub DeleteZIP()
Dim fso
Dim Shell
Dim ZIPfile
Dim Folder
Dim FolderItem

If WScript.Arguments.Count<optind+2 Then
WScript.Echo "Arguments Missing."
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 "Invalid Extension Name -",fso.GetExtensionName(ZIPfile)
WScript.Quit
End If
Set Folder=Shell.NameSpace(ZIPfile)
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),"- Not Found."
 WScript.Quit
End If
' FolderItem.InvokeVerb("delete")
FolderItem.InvokeVerb("??(&D)")
Next
End Sub

Sub ExtractZIP()
Dim fso
Dim Shell
Dim ZIPfile
Dim Folder
Dim FolderItem
Dim dFolder

If WScript.Arguments.Count<optind+1 Then
WScript.Echo "Arguments Missing."
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 "Invalid Extension Name -",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),"- Not Found."
  WScript.Quit
 End If
 dFolder.CopyHere FolderItem
Next
End If
End Sub

//************** ZIP.VBS end

Запуск:
CScript.exe zip.vbs test.zip test.txt
Хм... работает! :-)
11 smaharbA
 
29.10.08
12:19
с окном експлорера никчему намутили
12 NikVars
 
29.10.08
17:55
NtbackupАрхивация может выполняться из командной строки или пакетного файла с помощью команды ntbackup и различных параметров командной строки.

Синтаксис
ntbackup backup [systemstate] "@имя_файла_bks" /J {"имя_задания"} [/P {"имя_пула"}] [/G {"идентификатор_guid"}] [/T { "имя_ленты"}] [/N {"носитель"}] [/F {"имя_файла"}] [/D {"описание"}] [/DS {"имя_сервера"}] [/IS {"имя_сервера"}] [/A] [/V:{yes|no}] [/R:{yes|no}] [/L:{f|s|n}] [/M {тип_архива}] [/RS:{yes|no}] [/HC:{on|off}] [/SNAP:{on|off}]

Параметры
systemstate
Указывает, что следует выполнить архивацию данных о состоянии системы. При выборе данного параметра будет установлен обычный или копирующий тип архивации.
@имя_ bks_файла
Указывает имя файла (с расширением bks) со списком файлов для архивации в данном задании архивации. Перед именем файла должен стоять символ @. Этот файл содержит сведения о файлах и папках, подлежащих архивации. Этот файл должен быть создан с помощью программы архивации с графическим интерфейсом.
/J {"имя_задания"}
Указывает имя задания, которое будет упоминаться в файле журнала. Обычно имя задания описывает файлы и папки, подлежащие архивации в данном задании архивации, а также содержит дату и время архивации.
/P {"название_пула"}
Указывает пул носителей, носитель из которого будет использован. Обычно это подпул пула носителей архивации, такой как 4-мм DDS. Если этот подпул был выбран, невозможно использовать параметры командной строки /A, /G, /F или /T.
/G {"идентификатор_guid"}
Добавляет или заменяет данные на ленте. Не следует использовать этот параметр совместно с параметром /P.
/T {"имя_ленты"}
Добавляет или заменяет данные на ленте. Не следует использовать этот параметр совместно с параметром /P.
/N {"носитель"}
Указывает новое имя ленты. Не следует использовать параметр /A совместно с этим параметром.
/F {"имя_файла"}
Путь и имя файла на логическом диске. Совместно с этим параметром не следует использовать следующие параметры: /P /G /T.
/D {"описание"}
Указывает метку для каждого архива.
/DS {"имя_сервера"}
Производит архивацию файла службы каталогов указанного сервера Microsoft Exchange.
/IS {"имя_сервера"}
Производит архивацию файла банка сообщений указанного сервера Microsoft Exchange.
/A
Производит архивацию с добавлением в архив. Совместно с этим параметром следует использовать параметр /G или /T. Не следует использовать этот параметр совместно с параметром /P.
/V:{yes|no}
Проверяет данные после архивации.
/R:{yes|no}
Ограничивает доступ к этой ленте одним владельцем или членами группы «Администраторы».
/L:{f|s|n}
Указывает тип файла журнала: f=полный, s=сокращенный, n=нет (файл журнала не создается).
/M {тип_архива}
Указывает тип архива. Этот параметр должен иметь одно из следующих значений: normal, copy, differential, incremental или daily.
/RS:{yes|no}
Производит архивацию перемещенных данных на съемных носителях. Параметр командной строки /RS не требуется для архивации локальной базы данных съемных носителей (эта база данных содержит заместители мест файлов удаленного хранилища). При архивации папки %systemroot% программа архивации автоматически архивирует и базу данных съемных носителей.
/HC:{on|off}
Использует при возможности аппаратное сжатие.
/SNAP:{on|off}
Указывает, является (on) или не является (off) архив снимком состояния тома.
/M {тип_архива}
Указывает тип архива. Этот параметр должен иметь одно из следующих значений: normal, copy, differential, incremental или daily.
/?
Отображает справку в командной строке.
13 IVIuXa
 
30.10.08
05:35
(8)
так и сделаю
14 Moriarti
 
30.10.08
06:26
>ntbackup

тогда уж

makecab
expand
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший