无法记录 WinZip 命令行进程

Cannot log WinZip command line process

我得到了以下通过 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 过程的 运行 以确保成功完成和 error/s 外观。如果出现错误,我想做的是获取 WinZip returns.

的确切消息

我试过几种方法:

有谁知道我 can/should 还尝试了什么?

这是一个图形程序。它不使用控制台。所以你不能。

如果您使用正版程序,您会发现 PKZip 有命令行版本。 https://www.pkware.com/software/pkzip

正如@CheranShunmugavel 在对另一个答案的评论中指出的那样,知识库文章指的是 WinZip Command Line utility. If you want to work with WinZip on the command line I strongly recommend you get that add-on, even though the regular WinZip executable does support some basic command line parameters

注意,如果你想使用输出重定向(>)你必须 运行CMD中的命令,因为重定向是由命令提供的口译员。为了简化处理,我还建议使用 Run method rather than the Exec 方法,除非您需要以编程方式从 STDOUT and/or STDERR.

读取
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