2

私はVBScriptにかなり慣れていません。私は何を達成しようとしているのかについて大規模な調査を行い、何をすべきかの例を見つけましたが、適切に機能させることはできません.

私の完璧な世界では、サードパーティ ベンダーからフォルダーに送信されたすべての zip ファイルを解凍し、解凍したファイルを別のフォルダーにインポートしてから、zip ファイルを削除する必要があります。

以下のスクリプトは、パスワードで保護されていない zip ファイルに対しては適切に機能しますが、ベンダーから送信されたすべてのファイルにはパスワードが設定されています。別の投稿に見られるように、コメントアウトした次の行にはパスワードを挿入する必要がありますが、挿入しません。「...(pwd+myZipfile)」と「...(pwd+extractTo)」。

よろしくお願いします。これを実現するためのコードの改善やその他の方法を提案してください。

pathToZipFile = "P:\ZipFiles"  
extractTo = "P:\UnZip"    
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(pathToZipFile)
Set fc = f.Files
Dim myZipFile 
Dim intOptions, objShell, objSource, objTarget
Dim pwd
pwd = "password" 

For Each f1 in fc
On Error Resume Next

    myZipFile = f1

    '    Create the required Shell objects
    Set objShell = CreateObject( "Shell.Application" )

    '    Create a reference to the files and folders
    'Set objSource = objShell.NameSpace(pwd+myZipFile).Items( ) 
    Set objSource = objShell.NameSpace(myZipFile).Items( )

    '     Create a reference to the target folder
    Set objTarget = objShell.NameSpace(pwd+extractTo)
    Set objTarget = objShell.NameSpace(extractTo)
    intOptions = 256

    '     UnZIP the file
    objTarget.CopyHere objSource, intOptions

    '     Release the objects
    Set objSource = Nothing
    Set objTarget = Nothing
    Set objShell  = Nothing

    'Delete File from "P:\ZipFiles" after unzipping
    fso.DeleteFile f1, True

Next
4

1 に答える 1

3

の元となった回答をよく見ると、 passwordではなくpath含まれているpwd+...ことがわかります。この変数は、「印刷作業ディレクトリ」を表すUnix コマンドにちなんで名付けられた可能性があります。pwdpwd

私が知る限り、Shell.Applicationオブジェクトはパスワードで保護された Zip ファイルの解凍をサポートしていません。あなたが参照した質問に対する別の回答は、 DotNetZip ライブラリを示唆しています。または、 7-zipを使用できます:

Function qq(str)
  qq = Chr(34) & str & Chr(34)
End Function

zipfile  = "..."
password = "..."

Set sh = CreateObject("WScript.Shell")
sh.Run "7za.exe x " & qq(zipfile) & " -p" & qq(password), 0, True
于 2013-03-27T21:04:42.210 に答える