ระบุลำดับการเรียงใน“ copy / b * .dat foo” ใน Windows cmd


2

โดยปกติเมื่อฉันทำcopy /b *.data fooใน Windows cmd ที่*.dataไฟล์จะถูก catenated fooในลำดับการเรียงลำดับเป็นแฟ้มปลายทาง สิ่งนี้ตรงกับพฤติกรรมที่ฉันต้องการ

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

มีวิธีที่จะเอาชนะพฤติกรรมการเรียงลำดับที่แปลกประหลาดนี้หรือไม่? โดยทั่วไปแล้วจะทำอย่างไรถ้าฉันต้องการคัดลอกไฟล์พูดตามลำดับกลับด้าน


ไฟล์คี่ชื่ออะไร
Joel Coehoorn

@Joel ชื่อไฟล์เป็นเพียง nnnnnnnn.data โดยที่ n เป็นตัวเลขและจำนวนจะถูกนับอย่างต่อเนื่องตั้งแต่ 1 ไฟล์คี่จะเป็นไฟล์สุดท้ายที่สองเสมอตามลำดับที่เรียง พูดถ้าฉันมี 5 ไฟล์ 00000004.data จะออกมาก่อน
maverickwoo

คำตอบ:


2

วิธีนี้จะต่อไฟล์ ( แม้แต่ไฟล์ที่มีช่องว่าง ) ตามลำดับย้อนกลับ:

C:\> for /f "tokens=*" %i in ('dir /a-d /o-n /b c:\some_dir\*') do @type %i >> c:\another_dir\dest.dat

หากมีไฟล์เพียงไม่กี่ไฟล์คุณสามารถแสดงรายการได้อย่างชัดเจน:

C:\> copy /b c.dat+a.dat+b.dat dest.dat

บางสิ่งเช่นนี้อาจทำงานได้ในบางสถานการณ์:

C:\> copy /b file*.dat+foo.dat+bar*.dat dest.dat

ฉันต้องเรียนรู้ที่จะพิมพ์เร็วขึ้น! สิ่งที่เดนนิสพูด แม้ว่าประเภท (หรือมากกว่า) จะทำสำเนา ASCII เท่านั้นและคัดลอก / b เป็นเลขฐานสอง
ริสกิบสัน

@Rhys: ฉันเพิ่งทดสอบtypeกับไฟล์ไบนารีและมันทำงานได้อย่างสมบูรณ์
Dennis Williamson

ขอขอบคุณ. ฉันยังสงสัยเกี่ยวกับการพิมพ์ไฟล์ไบนารี แต่ดูเหมือนจะทำงานได้ตามที่คาดหวังในเครื่อง Windows 7 ของฉัน
maverickwoo

ยิ่งใหญ่ ฉันยืนแก้ไขแล้ว
ริสกิบสัน

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