1

我得到了以下 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 进程的运行,以便成功完成和错误/s 出现。如果出现错误,我想做的是获取 WinZip 返回的确切消息。

我尝试了几种方法:

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

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

4

2 回答 2

0

那是一个图形程序。它不使用控制台。因此你不能。

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

于 2015-06-01T00:31:07.040 回答
0

正如@CheranShunmugavel 在对另一个答案的评论中指出的那样,知识库文章指的是WinZip 命令行实用程序。如果您想在命令行上使用 WinZip,我强烈建议您获取该插件,即使常规 WinZip 可执行文件确实支持一些基本的命令行参数

请注意,如果您想使用输出重定向 ( >),您必须在 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
于 2015-06-01T09:30:00.480 回答