1

下面的脚本用于将 zip 解压缩到不同的文件夹并覆盖现有文件。该脚本在 Windows 7 机器上运行良好,但是当我在 XP 机器上使用它时,它仍然询问我是否要覆盖。我不需要与此脚本进行人工交互。任何帮助将不胜感激。谢谢你。

strZipFile = "Location.zip"    'name of zip file
outFolder = "Location output folder" 'destination folder of unzipped files

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 4 + 16 + 1024
objTarget.CopyHere objSource, intOptions
4

1 回答 1

1

文档说:

注意 在某些情况下,例如压缩 (.zip) 文件,某些选项标志可能会被设计忽略。

在 WinXP 上似乎就是这种情况,因此当您想要强制替换现有文件时,您必须使用不同的方法。例如,您可以将文件提取到临时文件夹,然后将它们复制到实际目标:

Set fso = CreateObject("Scripting.FileSystemObject")

'create temporary folder with random name
Randomize
tempFolder = fso.BuildPath(fso.GetSpecialFolder(2), Fix(Rnd * 100000))
fso.CreateFolder tempFolder

strZipFile = "Location.zip"    'name of zip file
outFolder = "Location output folder" 'destination folder of unzipped files

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items
Set objTarget = objShell.NameSpace(tempFolder)
objTarget.CopyHere objSource

fso.CopyFolder tempFolder, outFolder, True
fso.DeleteFolder tempFolder, True   'delete temporary folder
于 2013-04-11T17:35:34.777 回答