7-Zip çıktısını nasıl devre dışı bırakılır?


34

Bu gibi bir toplu iş dosyasının içindeki dosyaları sıkıştırmak için 7-Zip kullanıyorum :

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

Aşağıdaki çıktıyı aldım:

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

Bu çıktıyı devre dışı bırakmak mümkün müdür (yani, hiçbir şeyin yazdırılmasını istemiyorum).

Yanıtlar:


29

Sadece emrinizin > NUL:sonuna ekleyin .


1
Kolon ne için?
Peter Mortensen

3
@PeterMortensen: DOS ve Windows konsolunda, NUListeğe bağlı bir iki nokta tarafından takip edilebilen gibi ayrılmış aygıt adları . Bildiğim kadarıyla, gerçek bir işlev görmüyor, ancak bunun bir aygıt olduğunu görsel olarak hatırlatıyor ve bir sürücü harfinden sonra iki nokta üst üste kullanılmasına paralel oluyor.
sonraki duyuruya kadar duraklatıldı.


12

İşlemdeki durum mesajlarının görüntülenmesi şiddetle tavsiye edilir. Uzun mesajlardan kaçınmak için sadece onayları görüntüleyin:

...\right_path\7z a output_file_name.zip file_to_be_compressed | findstr /b /r /c:"\<Everything is Ok" /c:"\<Scanning" /c:"\<Creating archive"

findstrÇözüm için teşekkürler ! Eğer biraz ya atlanması ile bu çağrıyı kısaltabilir gibi görünüyor /bya da her ikisi \rve \<arama dizeleri içine. Burada findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"düzenli ifadelere ( /rseçenek) ihtiyaç duymadığınız için giderdim - /bzaten dizelerin başında arama yapar.
Oliver

Komutun başarılı olup olmadığını kontrol etmek için durum mesajlarını kullanmak istiyorsanız, dönüş kodlarını kullanmak daha iyidir ( 0başarı için ve başarısız olanları detaylandırmak için). Bir komut dosyasında bu değerlere dayalı kararlar almak iletilerden daha kolaydır.
WoJ

1
Mükemmel cevap. ... | findstr /v /b /c:"Compressing "Dosya listesinden kurtulmak için gittim ancak diğer durum mesajlarını sakladım.
Duncan Smart,

5

Bruno Dermario cevabını iyileştirerek , hataları da rapor etmek ve manuel olarak kontrol edebilmek istedim.

...\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.

2

PowerShell bir seçenek veya birinin kullanabileceği durumda, findstrcevabın fikrine dayanarak yaptığım işte bu .

& $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
}

Normal çalışmada, bu sadece "Her şey yolunda" satırını bırakır. Olağandışı bir şey yazdırıldığında, görünür kalır (normal çıktıda çok sık göründükleri gibi boş satırlar hariç).

Bu 7z format çıkışı için test edilmiştir. Diğer arşiv formatları "Sıkıştırma" dan başka mesajlar üretebilir. Ayıklamak da muhtemelen farklı mesajlar üretecektir. Ancak filtreyi gereksinimlerinize kolayca uyarlayabilirsiniz.

Daha karmaşık bir fikir, tüm çıktının bir tampon belleğe yönlendirilmesi ve yalnızca komutun bir hata çıkış kodu vermesi durumunda yazdırılması olacaktır. Bu, yeniden yönlendirmeye izin veren ve doğru bir hata çıkış kodu sağlayan tüm komutlarla çalışan bir yöntemdir.


1

findstrÇözümümü paylaşıyorum :

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

Yani orijinal 14 satır çıktı:


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

4 satıra kadar küçültmek:

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

sadece kesmeyi küçültür, uyarılar ve hatalar kesime gider, bu yüzden hala göreceksiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.