วิธี robocopy กับความคืบหน้าเข้าสู่คอนโซลเท่านั้น?


8

ฉันต้องการรัน RoboCopy ที่จะอัปเดตคอนโซลด้วยความคืบหน้า% แต่ไม่เกะกะล็อกไฟล์ด้วยความคืบหน้า%

คำสั่ง RoboCopy ต่อไปนี้จะทำการคัดลอกและผนวกข้อมูลการบันทึกที่ต้องการในไฟล์บันทึก

RoboCopy <source> <dest> /log+:<log file> /tee

ปัญหาคือไฟล์บันทึกนั้นเต็มไปด้วยการอัปเดตความคืบหน้า% ดังนั้นฉันต้องเปลี่ยนคำสั่งนี้:

RoboCopy <source> <dest> /log+:<log file> /tee /np

ตอนนี้ปัญหาคือฉันไม่ได้รับการอัพเดตความคืบหน้า% ใด ๆ บนหน้าจอ

ฉันอ่านhttp://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspxสองสามครั้งในขณะนี้และไม่สามารถหาสวิตช์ที่ฉันต้องการได้ ฉันทำบางสิ่งบางอย่างขาดหายไปหรือสิ่งที่ฉันต้องการบรรลุไม่สามารถทำได้หรือไม่?


คุณต้องใช้เครื่องมือในตัวเท่านั้นหรือไม่?
Hello71

คำตอบ:


2

เนื่องจากไม่มีใครตอบคำถามนี้มานานฉันคิดว่าฉันจะแนะนำบางสิ่ง

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

มีไฟล์. exe รุ่นเดียวsedในUnxUtils (ที่มีเวอร์ชันที่ทันสมัยกว่าใน zip การอัพเดทเล็กน้อย)

อีกตัวเลือกหนึ่งที่จะใช้XXCOPYRobocopyแทน มันมีจำนวนสวิตช์ที่ไร้สาระอย่างแท้จริง (มากกว่า 230) ซึ่งช่วยให้คุณทำสิ่งที่คุณต้องการ คุณต้องใช้เวลาช่วงเย็นทั้งวันเลือกสิ่งที่คุณต้องการใช้ นอกจากนี้ยังมีกล่องโต้ตอบความคืบหน้าของ GUI หากคุณต้องการใช้สิ่งนั้น

มีรุ่นฟรีสำหรับการใช้งานส่วนตัวซึ่งไม่สามารถใช้สำหรับการเขียนสคริปต์อัตโนมัติได้เนื่องจากคุณต้องปฏิบัติตามคำแนะนำแบบโต้ตอบซึ่งต่างจากรุ่นที่จ่ายเงิน

XXCOPY

อีกทางเลือกหนึ่งคือRichCopyซึ่งมี GUI ซึ่งสามารถใช้เพื่อเลือกตัวเลือกของคุณ จากนั้นสามารถให้บรรทัดคำสั่งของการทำงานของคุณเพื่อใช้ในชุดสคริปต์

RichCopy


1

เรื่อง robocopy และเข้าสู่ระบบความคืบหน้า 'เสียง'

วิธีแก้ปัญหา: ใช้เพียง / TEE และปล่อยให้บันทึก 'สัญญาณรบกวน' มิฉะนั้นคุณจะไม่เห็นความคืบหน้าใด ๆ จากนั้นใช้ sed ตามที่แนะนำก่อนเพื่อล้าง logfile ดังนี้:

sed -i.bak "s / \ x0d. * \ x0d. * $ //" logfile.txt

ลบ. bak หากคุณไม่ต้องการให้มีการสำรองข้อมูลที่ไม่ได้รวม sed ใช้ได้สำหรับ windows ที่นี่และใช้งานได้ดีอย่างน้อยสำหรับการใช้งานบรรทัดเดียว *

http://gnuwin32.sourceforge.net/packages/sed.htm

* (คำสั่ง sed ในสคริปต์ unash bash / cshell มักกระจายไปหลายบรรทัดเพิ่มความยืดหยุ่นและความซับซ้อนมากขึ้น .. ฉันไม่ได้คาดหวังว่าคำสั่ง sed เหล่านั้นจะทำงานกับสคริปต์ cmd ของ windows แต่ sed ยังมีประโยชน์ใน windows)


+1 ไม่มีวิธีที่จะส่งstdoutผ่านsedโดยตรงหรือไม่
Paradroid

1
แน่นอนคุณสามารถไปป์ sed ได้ซึ่งจะลบข้อมูลความคืบหน้าออกจากหน้าจอคอนโซลรวมถึงไฟล์บันทึกการทำงาน ...
Mac

แน่นอน แต่ฉันคิดว่าอาจจะใช้teeคำสั่งแทน/TEEสวิตช์ของ Robocopy แต่ฉันเพิ่งรู้ว่ามันเป็นส่วนหนึ่งTCC/LEและไม่ใช่CMDคำสั่งมาตรฐาน มันมีอยู่ในPowerShellแต่
Paradroid

ที่จริง .. มันยังคงเขียนระเบียบความคืบหน้าในการ logfile! ตรงข้ามกับสิ่งที่ต้องการ ฉันเพิ่งทดสอบด้วย: robocopy tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac

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