Не удается войти в процесс командной строки 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 выполнения оболочки, но он возвращает пустую строку.
Кто-нибудь знает, что еще я могу / должен попробовать?
2 ответа
Как отметил @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
Это графическая программа. Он не использует консоль. Поэтому ты не можешь.
Если вы использовали подлинные программы, вы обнаружите, что PKZip имеет версии для командной строки. https://www.pkware.com/software/pkzip