Как запаковать в zip скриптом win x64?

294
31 мая 2017, 06:06

Нижеприведеный скрипт отлично паковал файлы, но в новой win2008 R2 x64 почему то не пакует. Пишет

Сompressed(zipped) folderrs error: File not found or no read permission.

Пробовал закинуть старый pkzip.exe - пишет что он не совместим с ОS.

Как скриптом, очень желательно без установки стороннего ПО запаковывать в zip?

Где то выкачал архив zip.vbs или что-то такое, привожу часть скрипта

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
Answer 1

Таки правда файл был не доступен. Поставил доступ на запись в security для Services\Users и заработало.

READ ALSO
Плагин NextParticle

Плагин NextParticle

Решил купить плагин NextParticle, но появилось много вопросов:

508
Передача html из файла в node-crawler

Передача html из файла в node-crawler

Прошу помощи в следующей ситуацииПарсер (на node-crawler https://github

323
Работа с объектом в JS

Работа с объектом в JS

Нужна помощьЕсть задачка - Вывести день недели на русском или английском языке

300
Отобразить маршрут по координатам

Отобразить маршрут по координатам

Как отобразить маршрут на основе множества координат (10-100)Движение автомобиля

335