Skopiuj zawartość folderu do utworzonego pliku .zip: „nie znaleziono pliku lub nie ma uprawnień do odczytu”

Próbuję utworzyć plik .zip z istniejącego folderu za pomocą JScript i wygląda na to, że moja funkcja copyHere nie kopiuje do folderu .zip. Zamiast tego otrzymuję wyskakujące okienko zatytułowane „Skompresowany (spakowany) błąd folderu” z komunikatem „nie znaleziono pliku lub brak uprawnień do odczytu”, mimo że mam uprawnienia do odczytu / zapisu w pliku zgodnie z wartością mojej właściwości plik.atrybuty (32 ).

Oto skrypt, którego używam:

//Get commman line arguments
var objArgs = WScript.Arguments;
var zipPath = objArgs(0);
var sourcePath = objArgs(1);

//Create empty ZIP file and open for adding
var fso = new ActiveXObject("Scripting.FileSystemObject");

var file = fso.CreateTextFile(zipPath, true);
// Create twenty-two byte "fingerprint" for .zip
file.write("PK");
file.write(String.fromCharCode(5));
file.write(String.fromCharCode(6));
file.write('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0');

var objShell = new ActiveXObject("shell.application");
var zipFolder = new Object;

zipFolder = objShell.NameSpace(zipPath);

sourceItems = objShell.NameSpace(sourcePath).items();    

if (zipFolder != null)
{
    zipFolder.CopyHere(sourceItems);  
    WScript.Sleep(1000);      
}

Teraz funkcja CopyHere służy do kopiowania zawartości ścieżki źródłowej do normalnego folderu, ale gdy próbuję utworzyć plik .zip i skopiować do niego zawartość, nic się nie dzieje. Jakieś pomysły, dlaczego copyHere nie kopiuje zawartości ścieżki źródłowej do .zip?

Przykład wywołanie tego skryptu byłoby następujące:

cscript win-zip.js C:\desired\zip\file.zip C:\path\to\source\folder

Ipożądany wynik byłoby to, że plik.zip został utworzony i teraz zawiera zawartość folderu źródłowego. Czy może to być problem z uprawnieniami? Co może spowodować to zachowanie?

Dygresja, używając vbScript i tych samych poleceń, mogę z powodzeniem tworzyć i zapełniać .zip, więc dlaczego nie działa przy użyciu jscript!

Set objArgs = WScript.Arguments
ZipFile = objArgs(0)
SourceFolder = objArgs(1)

' Create empty ZIP file and open for adding
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
Set zip = CreateObject("Shell.Application").NameSpace(ZipFile)

' Get items in source folder
Set sourceItems = CreateObject("Shell.Application").NameSpace(SourceFolder).Items

' Add all files/directories to the .zip file
zip.CopyHere(sourceItems)
WScript.Sleep 1000 'Wait for items to be copied

Każdypomocny komentarze są bardzo mile widziane, dzięki!

questionAnswers(2)

yourAnswerToTheQuestion