Не удается зарегистрировать процесс командной строки 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.

Я пробовал несколько способов:

  • Добавление знака больше (>) с именем файла в конце командной строки, как было предложено в эта ссылка. Этот метод ничего не записывает в файл.
  • Также я попытался получить STDOUT и STDERR выполнения оболочки, но он возвращает пустую строку.

Кто-нибудь знает, что еще я могу/должен попробовать?


person jmrivas    schedule 31.05.2015    source источник


Ответы (2)


Как отметил @CheranShunmugavel в комментарии к другому ответу, статья базы знаний относится к утилите WinZip Command Line. Если вы хотите работать с WinZip в командной строке, я настоятельно рекомендую вам установить это дополнение, хотя обычный исполняемый файл WinZip поддерживает некоторые основные параметры командной строки.

Обратите внимание: если вы хотите использовать перенаправление вывода (>), вы должны запустить команду в CMD, поскольку перенаправление обеспечивается интерпретатором команд. Для упрощения обработки я бы также рекомендовал использовать Run< /a> вместо метода 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
person Ansgar Wiechers    schedule 01.06.2015

Это графическая программа. Он не использует консоль. Поэтому вы не можете.

Если вы использовали подлинные программы, вы обнаружите, что у PKZip есть версии для командной строки. https://www.pkware.com/software/pkzip

person Community    schedule 01.06.2015
comment
Кроме того, статья базы знаний, на которую ссылается вопрос, посвящена надстройке поддержки командной строки WinZip. Я не знаю, является ли это отдельной загрузкой или опцией при установке, но это еще один вариант, на который стоит обратить внимание. - person Cheran Shunmugavel; 01.06.2015
comment
Winzip запустил графическую программу, которая вызывала Dos-программы pkzip в Win 3.1. В PkZip есть УТИЛИТА ДЛЯ ВОССТАНОВЛЕНИЯ ZIP, поэтому я ссылаюсь на них. - person ; 01.06.2015