我正在尝试使用 JScript 从现有文件夹创建一个 .zip 文件,似乎我的 copyHere 函数没有复制到 .zip 文件夹。相反,即使根据我的 file.attributes 属性的值(32 )。
这是我正在使用的脚本:
//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);
}
现在 CopyHere 函数用于将 sourcePath 的内容复制到普通文件夹,但是当我尝试创建一个 .zip 文件并将内容复制到该文件夹时,什么也没有发生。关于为什么 copyHere 没有将 sourcePath 的内容复制到 .zip 的任何想法?
调用此脚本的示例是:
cscript win-zip.js C:\desired\zip\file.zip C:\path\to\source\folder
期望的结果是创建了 file.zip 并且现在包含源文件夹的内容。这可能是权限问题吗?什么可能导致这种行为?
旁注,使用 vbScript 和相同的命令我可以成功创建和填充 .zip,那么为什么它不能使用 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
非常感谢任何有用的意见,谢谢!