1

WinZip コマンド ライン経由でいくつかのテスト ファイルを圧縮する次の vbscript テスト コードを取得しました。

Dim strWinZipDir, strZipFileToCreate, strFilesToZip, strWinZip, strCommand

strWinZipDir = "C:\Program Files\WinZip\Winzip32.exe"
strZipFileToCreate = "C:\Users\ext_dirmod_01\Desktop\TestLog.zip"
strFilesToZip = """C:\Users\ext_dirmod_01\Desktop\FacturasGRA.vbs"" ""C:\Users\ext_dirmod_01\Desktop\Test Zip Windows.vbs"""

Set objFSO = CreateObject("Scripting.FileSystemObject")

strWinZip = objFSO.GetFile(strWinZipDir).ShortPath
strCommand = strWinzip & " -min -a -r """ & strZipFileToCreate & """ " & strFilesToZip

Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec(strCommand)

Do While objExec.Status = 0
Loop

私がやりたいことは、正常に完了した場合とエラーが発生した場合の両方で、zip プロセスの実行をログに記録することです。エラーが発生した場合、私がやりたいことは、WinZip が返す正確なメッセージを取得することです。

私はいくつかの方法を試しました:

  • このリンク>で提案されているように、コマンド ラインの最後にファイル名に大なり記号 () を追加します。このメソッドは、ファイルに何も書き込みません。
  • また、シェル実行の STDOUT と STDERR を取得しようとしましたが、空の文字列が返されます。

他に何ができるか、何を試すべきか知っている人はいますか?

4

2 に答える 2

0

@CheranShunmugavel が別の回答へのコメントで指摘したように、ナレッジ ベースの記事ではWinZip Command Line utilityを参照しています。コマンド ラインで WinZip を使用する場合は、アドオンを入手することを強くお勧めします。ただし、通常の WinZip 実行可能ファイルはいくつかの基本的なコマンド ライン パラメーターをサポートしています。

>出力リダイレクト ( )を使用する場合は、リダイレクトがコマンド インタープリターによって提供されるため、CMD でコマンドを実行する必要があることに注意してください。処理を簡素化するために、STDOUT や STDERR からプログラムで読み取る必要がない限り、Runメソッドではなくメソッドを使用することもお勧めします。Exec

Set objShell = CreateObject("WScript.Shell")
rc = objShell.Run("cmd /c " & strCommand & " >C:\path\to\your.log 2>&1", 0, True)

If rc <> 0 Then WScript.Echo "An error occurred (" & rc & ")."
WScript.Quit rc
于 2015-06-01T09:30:00.480 に答える
0

それがグラフィカルなプログラムです。コンソールは使用しません。したがって、できません。

正規のプログラムを使用した場合、PKZip にはコマンド ライン バージョンがあることがわかります。https://www.pkware.com/software/pkzip

于 2015-06-01T00:31:07.040 に答える