无法记录WinZip命令行进程

时间:2015-05-31 23:46:29

标签: logging command-line vbscript zip winzip

我得到了以下vbscript测试代码,通过WinZip命令行压缩一些测试文件:

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返回的确切消息。

我尝试了几种方法:

  • this link中建议的命令行末尾添加带有文件名的大于号(>)。此方法不会在文件上写任何内容。
  • 此外,我尝试获取shell执行的STDOUT和STDERR,但它返回一个空字符串。

有谁知道我还能/应该尝试什么?

2 个答案:

答案 0 :(得分:0)

这是一个图形程序。它没有使用控制台。因此,你不能。

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

答案 1 :(得分:0)

正如@CheranShunmugavel在对另一个答案的评论中所指出的,知识库文章引用了WinZip Command Line utility。如果您想在命令行上使用WinZip,我强烈建议您使用该附加组件,即使常规WinZip可执行文件支持some basic command line parameters

请注意,如果要使用输出重定向(>),则必须在CMD中运行命令,因为重定向由命令解释程序提供。为简化处理,我还建议使用Run方法而不是Exec方法,除非您需要以编程方式从STDOUT和/或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