การลบไฟล์ทั้งหมดที่ไม่ตรงกับรูปแบบที่แน่นอน - บรรทัดคำสั่งของ Windows


11

การลบรายการผ่านบรรทัดคำสั่งนั้นค่อนข้างง่าย

del /options filename.extension

ตอนนี้สมมติว่าฉันต้องการลบไฟล์ทั้งหมดที่ไม่ได้ลงท้ายด้วย. jpg ในโฟลเดอร์ฉันจะทำอย่างไร

สิ่งนี้คือฉันมีซอฟต์แวร์หนึ่งชิ้นที่แปลงรูปภาพที่ระบุทั้งหมดเป็น. jpg แต่มันปล่อยต้นฉบับซึ่งฉันไม่ต้องการอีกต่อไป

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

คำตอบ:


13

ฉันจะทำเช่นนี้:

attrib +r *.jpg
del /q *
attrib -r *.jpg

สิ่งนี้จะทำให้ไฟล์ JPG ทั้งหมดเป็นแบบอ่านอย่างเดียวลบทุกอย่างออกไป (มันจะข้ามไฟล์อ่านอย่างเดียวโดยอัตโนมัติ) จากนั้นทำให้ไฟล์ JPG นั้นเขียนได้อีกครั้ง


ทำงานเหมือนแชมป์ หมายเหตุ: เพียงเพิ่ม /s ไปที่แต่ละบรรทัดเพื่อรวมไฟล์ซ้ำในไดเรกทอรีย่อย
Chuck Wilbur

9

ที่จริงแล้วค่อนข้างง่าย

คุณจะต้องการ for เพื่อวนซ้ำไฟล์ต่างๆจากนั้นค้นหาส่วนขยาย:

for %f in (*) do if not %~xf==.jpg del "%f"

ควรทำเคล็ดลับ (รหัส ที่นี่ )


ขอบคุณ แต่เพียงอย่างเดียวนั้นขึ้นอยู่กับแผนที่ที่ฉันใช้
KdgDev

4
แผนที่?
Joey

ฉันจะบอกได้อย่างไรว่าไม่ใช่. jpg และไม่ใช่. jsp และไม่ใช่. xml แล้วจะเป็นอย่างไร
user1164061

1

Powershell เพื่อช่วยเหลือ
ในช่วงเวลาของ Windows 7/8 มันเป็นตัวต่อของบรรทัดคำสั่งเก่าที่ดี

Del C:\myFolder\* -exclude '*.jpg'

Del เป็นชื่อแทน Remove-Item. มันมีหลายตัวเลือกเช่นการเรียกคืนรวมยกเว้นและกรอง (ใช้สำหรับ RegEx)

คุณต้องเพิ่ม \* เพื่อรวมไฟล์ในโฟลเดอร์ที่กำหนด


จากพรอมต์ CMD สิ่งนี้น่าจะใช้ได้: PowerShell.exe -Command "&{Remove-Item C:\MyFolder\* -Exclude '*.jpg'}"
Iszi

หมายเหตุ: PowerShell มาพร้อมกับ Win 7/8 สำหรับ Windows XP หรือ Vista คุณต้องดาวน์โหลดและติดตั้ง
Iszi

1

ฉันรู้ว่าไม่ได้ตอบคำถามของคุณโดยตรง แต่คุณได้ดูตัวเลือกต่างๆในโปรแกรมแปลงไฟล์ของคุณเพื่อดูว่า:

  1. มันสามารถลบต้นฉบับได้

หรือ

  1. เขียน. jpg ไปยังโฟลเดอร์ใหม่หรือไม่?

ฉันไม่มีตัวเลือกโดยตรงให้ทำ สิ่งที่จะทำคือเขียนทับต้นฉบับหากเป็น JPG เพื่อเริ่มต้น แต่คนอื่น ๆ ทั้งหมดยังคงอยู่ในดิสก์ในขณะที่สร้าง JPG ของพวกเขา
KdgDev

@ WebDevHobo - โอ้ดีฉันจะไปพร้อมกับข้อเสนอแนะของโยฮันเนสแล้ว
ChrisF

0

ฉันกำลังมองหาวิธีการค้นหาไฟล์ทั้งหมดที่ไม่มีนามสกุล ".mp3" ในไดเรคทอรี TREE บน Windows 7 (วอลุ่ม NTFS) ที่มีไฟล์ 20,000 ไฟล์ในหลายร้อยไดเรกทอรีที่มีความลึกต่าง ๆ ... หลังจากนั้น ฉันใช้:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

รายการนี้แสดงไฟล์ที่ไม่ตรงกับ. mp3 หลังจากแยกทุกอย่างที่เกี่ยวข้องกับเอาต์พุตคำสั่ง DIR ... 99% ใช้งานได้ ... เว้นแต่ไฟล์ที่ไม่ตรงกันจะมีชื่อเป็นหนึ่งในคำหลักในเอาต์พุต DIR มาตรฐาน - อาจมีวิธีที่จะทำให้ DIR รายงานข้อมูลส่วนหัว / ข้อมูลสรุปน้อยลง - แต่ฉันก็ไม่ต้องกังวลเพราะนี่เป็นวิธีที่ดีที่สุด


เห็นได้ชัดว่ารหัสการโพสต์ที่นี่ดึงอักขระพิเศษบางตัวออกไป ... ดังนั้นคำสั่ง "cd" ด้านบนจะอยู่ในบรรทัดด้วยตัวเองและระบุไดเรกทอรีรากเป้าหมายและคำสั่ง "ค้นหา" แรกจะลบบรรทัดที่มี "& lt;" DIR "& gt;" (ไปที่รูป) เนื่องจากนั่นคือเอาต์พุตของคำสั่ง dir - แต่โพสต์โค้ดที่นี่อาจคิดว่านั่นเป็นคำสั่ง meta และเรียงมัน ...
CaptPat

1
มีวิธีที่ง่ายกว่ามากในการทำเช่นนี้: /b ธงของ dir คำสั่ง dir /b จะแสดงรายการชื่อไฟล์และส่วนขยายในไดเรกทอรีปัจจุบันเท่านั้น dir /s /b จะแสดงชื่อที่ผ่านการรับรองโดยสมบูรณ์ของไฟล์ทั้งหมดในไดเรกทอรีย่อยปัจจุบันและทั้งหมด ท่อไปที่ find /v แทนที่จะเป็น for ห่วงเป็นสัมผัสที่ดีที่ฉันจะต้องจำไว้ แต่ฉันไม่คิดว่ามันจะทำงานกับ del.
Bob

0

อีกวิธีในการลบไฟล์ทั้งหมดที่ตรงกับชื่อไฟล์แสดงอยู่ด้านล่าง รายการทั้งหมดของไฟล์วนรอบและถ้าไม่ตรงกับชื่อไฟล์ (ไม่มีชื่อไดเรกทอรี)

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.