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 に答える