รายการไดเรกทอรีเรียงตามขนาด แต่มีการเลือก *. * ที่ด้านบน


1

ฉันต้องการที่จะแสดงรายการในขนาดย้อนกลับสั่งซื้อไฟล์ในไดเรกทอรีที่แน่นอน

นี่เป็นเรื่องง่าย: ใช้ dir /o-s/b >dir.lis.

อย่างไรก็ตามฉันต้องการให้ไฟล์ชื่อ opt *. * ปรากฏที่ด้านบนเสมอ

ไม่แน่ใจว่าจะทำอย่างไร ฉันสามารถทำได้สองขั้นตอนเช่น dir /o-s opt*.* >dir.lis และออกคำสั่งที่สองเพื่อแสดงรายการส่วนที่เหลือ

แต่ฉันจะแยก opt *. * ออกจากรายชื่อที่สองได้อย่างไร

คำตอบ:


1

ฉันจะยกเว้นได้อย่างไร opt*.* จากรายการที่สอง?

คุณสามารถใช้ได้ findstr เพื่อให้บรรลุนี้:

dir /b /o-s *.* | findstr /bivr /c:"opt*.*"

ที่ไหน:

  • /b จับคู่รูปแบบหากอยู่ที่จุดเริ่มต้นของบรรทัด

  • /i การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์

  • /v พิมพ์เฉพาะบรรทัดที่ไม่มีคู่ที่ตรงกัน

  • /r ใช้สตริงเป็นนิพจน์ทั่วไป

  • /c"string" ใช้สตริงเป็นสตริงค้นหาตัวอักษร (อาจมีช่องว่าง)

ดังนั้นการรวมสองคำสั่งต่อไปนี้เข้าด้วยกันจะทำสิ่งที่คุณต้องการ opt*.* ไฟล์ก่อน)

rem get opt*.* files
dir /b /o-s opt*.* > dir.lis
rem get the rest of the files excluding opt*.*
dir /b /o-s *.* | findstr /bivr /c:"opt*.*" >> dir.lis

อ่านเพิ่มเติม


ขอบคุณ มันจะลบไฟล์ opt *. * ทั้งหมด แต่ยังรวมถึงไฟล์ loop *. * ทั้งหมดด้วย เหตุใดจึงต้องลบสิ่งเหล่านี้ด้วย
dacfer

ฉันได้อัพเดตคำตอบเพื่อล็อค regexp ไปที่จุดเริ่มต้นของบรรทัด findstr ตัวเลือก /b ) ซึ่งแก้ไขปัญหานี้
DavidPostill

รู้สึกทึ่งว่าทำไมคนแรกไม่ได้ทำงาน มันจับคู่กับ loop เพื่อเลือก * ได้อย่างไร
dacfer

@dacfer ไม่มีความคิดโดยไม่เห็นรายการ opt และลูปของคุณทั้งหมด
DavidPostill

D: \ & gt; พิมพ์ xx optim02.log optim02a.log optim01.log loop_df.log loop_gr.log loop_dr.log loop_hb.log loop_fb.log loop_bb.log D: \ & gt; findstr / ivr /c:"opt*.* "& lt; xx D: \ & gt;
dacfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.