Я использую 7-Zip для сжатия файлов внутри командного файла следующим образом:
...\right_path\7z a output_file_name.zip file_to_be_compressed
Я получил следующий вывод:
7-Zip 4.65 Copyright (c) 1999-2009 Igor Pavlov 2009-02-03
Scanning
Creating archive output_file_name.zip
Compressing file_to_be_compressed
Everything is Ok
Можно ли отключить этот вывод (то есть я не хочу ничего печатать)?
NUL
может следовать необязательное двоеточие. Насколько я знаю, он не выполняет никакой реальной функции, но служит визуальным напоминанием о том, что это устройство, и параллельно с двоеточием после буквы диска.Вы можете использовать команду -bs, чтобы контролировать направление вывода. Чтобы остановить что-либо, кроме вывода ошибок, я бы добавил
-bso0 -bsp0
.источник
Настоятельно рекомендуется просматривать сообщения о состоянии в процессе. Чтобы избежать длинных сообщений, отображать только подтверждения:
источник
findstr
решение! Похоже, вы можете несколько сократить этот вызов, либо пропустив,/b
либо и то,\r
и другое\<
внутри строк поиска. Я бы пошел,findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"
так как вам не нужны регулярные выражения (/r
опция) здесь -/b
уже ищет только в начале строки.0
для успеха и других, которые подробно описывают, что не удалось). В сценарии легче принимать решения на основе этих значений, чем на основе сообщений.... | findstr /v /b /c:"Compressing "
чтобы избавиться от списка файлов, но сохранил другие сообщения о состоянии.Улучшая ответ Bruno Dermario , я хотел также сообщать об ошибках и иметь возможность проверять их вручную.
источник
В случае, если PowerShell является опцией или кто-то может ее использовать, вот что я сделал, основываясь на идее
findstr
ответа.При нормальной работе это оставляет только строку «Все в порядке». Если что-то необычное печатается, оно остается видимым (за исключением пустых строк, которые часто появляются в обычном выводе).
Это проверено на вывод формата 7z. Другие форматы архива могут выдавать сообщения, отличные от «Сжатие». Извлечение, вероятно, также приведет к появлению разных сообщений. Но вы можете легко адаптировать фильтр к вашим потребностям.
Более сложной идеей было бы перенаправить весь вывод в буфер и распечатать его только в том случае, если команда возвращает код завершения ошибки. Это метод, который работает со всеми командами, которые позволяют перенаправлять и предоставляют точный код завершения ошибки.
источник
Поделиться своим
findstr
решением:Итак, оригинальный 14-строчный вывод:
сократить до 4-х строк:
он сжимает только sOut, предупреждения и ошибки отправляются в sErr, поэтому вы все равно их увидите
источник