Copie o conteúdo da pasta para um arquivo .zip criado: 'arquivo não encontrado ou sem permissões de leitura'
Estou tentando criar um arquivo .zip de uma pasta existente usando JScript e parece que minha função copyHere não está copiando para a pasta .zip. Em vez disso, recebo uma caixa pop-up com o nome "Erro de pasta compactado (zipado)", com a mensagem "arquivo não encontrado ou sem permissão de leitura", embora eu tenha privilégios de leitura / gravação no arquivo de acordo com o valor da propriedade file.attributes (32 ).
Aqui está o script que estou usando:
//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);
}
Agora a função CopyHere funciona para copiar o conteúdo do sourcePath para uma pasta normal, mas quando tento criar um arquivo .zip e copio o conteúdo para isso, nada acontece. Alguma idéia de por que copyHere não está copiando o conteúdo do sourcePath para o .zip?
Um exemplo para chamar este script seria:
cscript win-zip.js C:\desired\zip\file.zip C:\path\to\source\folder
E aresultado desejado seria que file.zip foi criado e agora contém o conteúdo da pasta de origem. Isso pode ser um problema com permissões? O que pode causar esse comportamento?
Nota, usando um vbScript e os mesmos comandos eu posso criar e preencher com sucesso um .zip, então por que ele não funciona usando o 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
Qualquerútil Comentários são muito apreciados, obrigado!