ใช้ Forfiles เพื่อประมวลผลไฟล์ตามอายุ

เป็นการดีที่จะรู้เวทมนตร์ของ command line บางครั้งมันก็ง่ายที่จะประมวลผลคำสั่งด้วยวิธีนี้

คู่มือนี้แสดงให้เห็นถึงคำสั่ง Forfiles ใน Windows Vista และ Windows 7 (อัปเดต: มีใน Windows เวอร์ชั่นใหม่กว่า)

Forfiles สามารถประมวลผลไฟล์ตามชื่อนามสกุลไฟล์และอายุ มันเป็นไปได้เช่นในการค้นหาเอกสารทั้งหมดในไดเรกทอรีที่เก่ากว่า 20 วันหรือเอกสารทั้งหมดใน c: \ เอกสารที่มีการเปลี่ยนแปลงตั้งแต่วันที่ที่ระบุ

คำสั่ง forfiles สามารถควบคู่กับตัวเลือกการประมวลผลเพื่อลบไฟล์เหล่านั้นหรือเพื่อสร้างรายการไฟล์ทั้งหมดที่ตรงกับตัวกรอง ให้ดูที่คำสั่ง forfiles อย่างละเอียดยิ่งขึ้น

FORFILES [/ P pathname] [/ M searchmask] [/ S] [/ C คำสั่ง] [/ D [+ | -] dd / MM / yyyy]

คำอธิบาย: เลือกไฟล์ (หรือชุดไฟล์) และดำเนินการคำสั่งในไฟล์นั้น สิ่งนี้มีประโยชน์สำหรับงานแบ็ตช์

รายการพารามิเตอร์:

  • / P ชื่อพา ธ ระบุพา ธ เพื่อเริ่มการค้นหา โฟลเดอร์เริ่มต้นคือไดเรกทอรีการทำงานปัจจุบัน (.)
  • / M searchmask ค้นหาไฟล์ตาม searchmask searchmask เริ่มต้นคือ '*'
  • / S สั่งให้ forfiles เรียกเก็บเงินคืนในไดเรกทอรีย่อย เช่นเดียวกับ "DIR / S"
  • คำสั่ง / C ระบุคำสั่งเพื่อเรียกใช้งานสำหรับแต่ละไฟล์ สตริงคำสั่งควรอยู่ในเครื่องหมายคำพูดคู่ คำสั่งเริ่มต้นคือ "cmd / c echo @file"

ตัวแปรต่อไปนี้สามารถใช้ในสตริงคำสั่ง:

  • @file - ส่งคืนชื่อไฟล์
  • @fname - ส่งคืนชื่อไฟล์โดยไม่มีนามสกุล
  • @ext - ส่งคืนเฉพาะนามสกุลของไฟล์
  • @path - ส่งคืนพา ธ เต็มของไฟล์
  • @relpath - ส่งคืนพา ธ สัมพัทธ์ของไฟล์
  • @isdir - ส่งคืน "TRUE" หากประเภทไฟล์เป็นไดเรกทอรีและ "FALSE" สำหรับไฟล์
  • @fsize - ส่งคืนขนาดของไฟล์เป็นไบต์
  • @fdate - ส่งคืนวันที่แก้ไขล่าสุดของไฟล์
  • @ftime - ส่งคืนเวลาที่แก้ไขล่าสุดของไฟล์

ในการรวมอักขระพิเศษในบรรทัดคำสั่งให้ใช้รหัสเลขฐานสิบหกสำหรับอักขระในรูปแบบ 0xHH (เช่น 0x09 สำหรับแท็บ) คำสั่ง CMD.exe ภายในควรนำหน้าด้วย "cmd / c"

/ D date เลือกไฟล์ที่มีวันที่แก้ไขล่าสุดมากกว่าหรือเท่ากับ (+) หรือน้อยกว่าหรือเท่ากับ (-) วันที่ที่ระบุโดยใช้รูปแบบ "dd / MM / yyyy"; หรือเลือกไฟล์ที่มีวันที่แก้ไขล่าสุดที่มากกว่าหรือเท่ากับ (+) วันที่ปัจจุบันบวกกับวัน "dd" หรือน้อยกว่าหรือเท่ากับ (-) วันที่ปัจจุบันลบด้วยวัน "dd" จำนวนวัน "dd" ที่ถูกต้องสามารถเป็นตัวเลขใด ๆ ในช่วง 0 - 32768 "+" จะถูกใช้เป็นสัญญาณเริ่มต้นหากไม่ได้ระบุไว้

/? แสดงข้อความช่วยเหลือนี้ ไฟล์ช่วยเหลือนี้สามารถเปิดได้โดยการป้อนคำสั่ง forfiles /? ในพรอมต์คำสั่ง กด Windows-R พิมพ์ cmd และกด Enter เพื่อเปิดบรรทัดคำสั่งใน Windows

คำสั่ง forfiles /P c:\test\ /M .doc /S /D -10 ค้นหาไดเร็กทอรี c: \ test และไดเรกทอรีย่อยทั้งหมดเพื่อหาไฟล์ที่มีนามสกุล. doc ที่เก่ากว่า 10 วัน

พารามิเตอร์ / p ตามด้วยไดเรกทอรีจะกำหนดไดเรกทอรีเริ่มต้น / s รวมไดเรกทอรีย่อยในการค้นหา / m กรองไฟล์และโฟลเดอร์ตามสตริงที่ป้อนและ / D จะกำหนดวันที่หรือช่วงเวลา

คำสั่ง / C ใช้เพื่อประมวลผลไฟล์ที่พบเพิ่มเติม สามารถใช้อินสแตนซ์เพื่อเรียกใช้คำสั่งต่อไปนี้: /C "cmd /c echo @fname" > test.txt echo ชื่อของแต่ละไฟล์ที่พบและบันทึกผลลัพธ์ใน text.txt ในไดเรกทอรีเดียวกัน

คำสั่งแบบเต็มจะมีลักษณะเช่นนี้ forfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt

ความเป็นไปได้อีกอย่างหนึ่งคือการลบไฟล์ที่ตรงกับการค้นหาซึ่งทำได้ด้วยคำสั่ง /C "cmd /c del @File

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