จะปิดการใช้งานเอาต์พุตของ 7-Zip ได้อย่างไร?


34

ฉันใช้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

เป็นไปได้ไหมที่จะปิดการใช้งานเอาต์พุตนี้ (นั่นคือฉันไม่ต้องการให้พิมพ์อะไร)?

คำตอบ:


29

เพียงเพิ่ม> NUL:ไปยังจุดสิ้นสุดของคำสั่งของคุณ


1
ลำไส้ใหญ่มีไว้ทำอะไร?
Peter Mortensen

3
@PeterMortensen: ในคอนโซล DOS และ Windows ชื่ออุปกรณ์ที่สงวนไว้เช่นNULสามารถตามด้วยโคลอนเสริม เท่าที่ฉันรู้มันไม่มีฟังก์ชั่นที่เกิดขึ้นจริง แต่ทำหน้าที่เป็นเครื่องเตือนความจำที่มองเห็นได้ว่ามันเป็นอุปกรณ์และแนวการใช้โคลอนหลังจากอักษรกำกับไดรฟ์
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

17

คุณสามารถใช้คำสั่ง-bsเพื่อควบคุมว่าจะไปที่ใด ที่จะหยุดอะไร -bso0 -bsp0แต่ออกข้อผิดพลาดผมจะเพิ่ม


สิ่งนี้ถูกต้อง แต่ได้รับการแนะนำใน 7Zip เวอร์ชัน 15.01 หรือหลัง 9.38beta ที่มา: sourceforge.net/p/sevenzip/discussion/45797/thread/8a45fa74 Synology DSM 6.1.x แท้จริงรวมถึง 7zip ด้วยรุ่น 9.20 และไม่มีตัวเลือกดังกล่าว
PeterCo

12

ขอแนะนำเป็นอย่างยิ่งให้ดูข้อความสถานะในกระบวนการ เพื่อหลีกเลี่ยงข้อความที่ยาวให้แสดงการยืนยันเท่านั้น:

...\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แก้ปัญหา! ดูเหมือนว่าคุณจะสามารถตัดการโทรออกให้สั้นลงได้โดยการละเว้น/bหรือทั้งสองอย่าง\rและ\<ภายในสตริงการค้นหา ฉันไปด้วยfindstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"เนื่องจากคุณไม่ต้องการนิพจน์ทั่วไป ( /rตัวเลือก) ที่นี่ - /bค้นหาเฉพาะจุดเริ่มต้นของสตริงอยู่แล้ว
โอลิเวอร์

หากคุณต้องการใช้ข้อความสถานะเพื่อตรวจสอบว่าคำสั่งสำเร็จหรือไม่นั้นจะดีกว่าถ้าใช้รหัสส่งคืน ( 0สำหรับความสำเร็จและอื่น ๆ สคริปต์จะง่ายต่อการตัดสินใจตามค่าเหล่านี้มากกว่าในข้อความ
WoJ

1
คำตอบที่ดี ฉันไปกับ... | findstr /v /b /c:"Compressing "เพื่อกำจัดรายชื่อไฟล์ แต่เก็บข้อความสถานะอื่น ๆ
Duncan Smart

5

การปรับปรุงคำตอบของBruno Dermarioฉันต้องการรายงานข้อผิดพลาดและสามารถตรวจสอบได้ด้วยตนเอง

...\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 เป็นตัวเลือกหรือบางคนสามารถใช้งานได้นี่คือสิ่งที่ฉันทำตามแนวคิดของfindstrคำตอบ

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

ในการทำงานปกติการดำเนินการนี้จะทิ้งเฉพาะบรรทัด หากมีสิ่งผิดปกติใด ๆ ที่พิมพ์ออกมามันจะยังคงมองเห็นได้ (ยกเว้นสำหรับบรรทัดว่างเปล่าที่ปรากฏบ่อยครั้งในเอาต์พุตปกติ)

นี่คือการทดสอบสำหรับการส่งออกรูปแบบ 7z รูปแบบไฟล์เก็บถาวรอื่นอาจสร้างข้อความอื่นนอกเหนือจาก "บีบอัด" การแตกไฟล์อาจสร้างข้อความที่แตกต่างกัน แต่คุณสามารถปรับตัวกรองตามความต้องการของคุณได้อย่างง่ายดาย

แนวคิดที่ซับซ้อนมากขึ้นคือเปลี่ยนเส้นทางเอาต์พุตทั้งหมดไปยังบัฟเฟอร์และพิมพ์เฉพาะในกรณีที่คำสั่งส่งคืนรหัสข้อผิดพลาดออก นี่เป็นวิธีการที่ทำงานกับคำสั่งทั้งหมดที่อนุญาตให้เปลี่ยนเส้นทางและระบุรหัสการออกจากข้อผิดพลาดที่ถูกต้อง


1

การแบ่งปันfindstrโซลูชันของฉัน:

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

ดังนั้นเอาท์พุท 14 บรรทัดเดิม:


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 บรรทัด:

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

มันจะลดขนาดเฉพาะ sOut คำเตือนและข้อผิดพลาดจะไปที่ sErr ดังนั้นคุณจะยังเห็นพวกเขาอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.