Bagaimana cara menonaktifkan output 7-Zip?

34

Saya menggunakan 7-Zip untuk mengkompres file di dalam file batch seperti ini:

...\right_path\7z a output_file_name.zip file_to_be_compressed

Saya mendapat hasil sebagai berikut:

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

Apakah mungkin untuk menonaktifkan output ini (yaitu, saya tidak ingin ada yang dicetak)?

Misha Moroshko
sumber

Jawaban:

29

Tambahkan saja > NUL:di akhir perintah Anda.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
1
Untuk apa usus besar?
Peter Mortensen
3
@PeterMortensen: Di konsol DOS dan Windows, nama perangkat yang dicadangkan seperti NULdapat diikuti oleh titik dua opsional. Sejauh yang saya tahu, itu tidak melakukan fungsi yang sebenarnya, tetapi berfungsi sebagai pengingat visual bahwa itu adalah perangkat dan paralel dengan penggunaan titik dua setelah huruf drive.
Dijeda sampai pemberitahuan lebih lanjut.
17

Anda dapat menggunakan perintah -bs untuk mengontrol kemana output berjalan. Untuk menghentikan apa pun selain output kesalahan, saya akan menambahkan -bso0 -bsp0.

Evan
sumber
Ini benar, tetapi diperkenalkan dalam 7Zip versi 15.01 atau setelah 9.38beta Sumber: sourceforge.net/p/sevenzip/discussion/45797/thread/8a45fa74 Synology DSM 6.1.x aktual menyertakan 7zip dengan versi 9.20 dan tidak memiliki opsi seperti itu.
PeterCo
12

Sangat disarankan untuk melihat pesan status dalam proses. Untuk menghindari pesan yang panjang, hanya tampilkan konfirmasi:

...\right_path\7z a output_file_name.zip file_to_be_compressed | findstr /b /r /c:"\<Everything is Ok" /c:"\<Scanning" /c:"\<Creating archive"
Bruno Dermario
sumber
Terima kasih atas findstrsolusinya! Sepertinya Anda agak dapat mempersingkat panggilan itu dengan menghilangkan /batau keduanya \rdan di \<dalam string pencarian. Saya akan menggunakan findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"karena Anda tidak perlu ekspresi reguler ( /ropsi) di sini - /bsudah mencari hanya di awal string.
Oliver
jika Anda ingin menggunakan pesan status untuk memeriksa apakah perintah berhasil, lebih baik menggunakan kode pengembalian ( 0untuk keberhasilan dan lainnya yang merinci apa yang gagal). Lebih mudah dalam skrip untuk membuat keputusan berdasarkan nilai-nilai ini daripada pada pesan.
WoJ
1
Jawaban yang bagus Saya pergi dengan ... | findstr /v /b /c:"Compressing "menyingkirkan daftar file tetapi menyimpan pesan status lainnya.
Duncan Smart
5

Meningkatkan jawaban Bruno Dermario , saya juga ingin melaporkan kesalahan dan dapat memeriksanya secara manual.

...\right_path\7z a output_file_name.zip file_to_be_compressed > 7z_log.txt
type 7z_log.txt | findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive" /c:"Error"
echo.
echo (In case of Error check 7z_log.txt)
echo.
Ory Zaidenvorm
sumber
2

Jika PowerShell adalah opsi atau seseorang dapat menggunakannya, inilah yang saya lakukan, berdasarkan ide findstrjawabannya.

& $sevenZipBin a "$archiveFile" * | where {
    $_ -notmatch "^7-Zip " -and `
    $_ -notmatch "^Scanning$" -and `
    $_ -notmatch "^Creating archive " -and `
    $_ -notmatch "^\s*$" -and `
    $_ -notmatch "^Compressing "
}
if (-not $?)
{
    # Show some error message and possibly exit
}

Dalam operasi normal, ini hanya menyisakan garis "Semuanya OK". Jika sesuatu yang tidak biasa dicetak, tetap terlihat (kecuali untuk baris kosong seperti yang sering muncul dalam output reguler).

Ini diuji untuk output format 7z. Format arsip lain dapat menghasilkan pesan selain "Mengompresi". Mengekstrak kemungkinan juga akan menghasilkan pesan yang berbeda. Tetapi Anda dapat dengan mudah menyesuaikan filter dengan kebutuhan Anda.

Gagasan yang lebih kompleks adalah mengarahkan semua output ke buffer dan hanya mencetaknya jika perintah mengembalikan kode keluar kesalahan. Ini adalah metode yang bekerja dengan semua perintah yang memungkinkan pengarahan ulang dan memberikan kode keluar kesalahan yang akurat.

ygoe
sumber
1

Berbagi findstrsolusi saya :

%ZIP% a -tzip %FILE% %Folder% | findstr /I "archive everything"

Jadi keluaran 14-baris asli:


7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive:
4 folders, 13 files, 88957 bytes (87 KiB)

Creating archive: Releases\Archive.zip

Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)


Files read from disk: 13
Archive size: 33913 bytes (34 KiB)
Everything is Ok

menyusut ke 4-baris:

Creating archive: Releases\Archive.zip
Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)
Archive size: 33912 bytes (34 KiB)
Everything is Ok

itu menyusut hanya sOut, peringatan dan kesalahan masuk ke sErr, jadi Anda masih akan melihatnya

yalov
sumber