ค้นหาเว็บไซต์

รับไฟล์ทั้งหมดในไดเรกทอรีแบบเรียกซ้ำใน PowerShell


ใน PowerShell ไดเรกทอรีสามารถดึงข้อมูลซ้ำได้โดยใช้ Get-ChildItem cmdlet และพารามิเตอร์ -Recurse

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Path "D:\Content Writing" -Recurse

เอาท์พุต :

    Directory: D:\Content Writing

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        09-04-2023     16:57                test1
d-----        09-04-2023     16:58                test2

    Directory: D:\Content Writing\test1

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        09-04-2023     16:57              7 file1.md
-a----        09-04-2023     16:57              7 file2.md
-a----        09-04-2023     16:57              7 file3.md

    Directory: D:\Content Writing\Directory\test2

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        09-04-2023     16:57              7 file4.md
-a----        09-04-2023     16:57              7 file5.md

หากคุณต้องการรับไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันใน PowerShell คุณสามารถใช้คำสั่งด้านล่าง:

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Recurse

โฟลเดอร์และไฟล์สามารถยกเว้นได้โดยใช้พารามิเตอร์ -Exclude

ขั้นแรก ให้ดูที่วัตถุประสงค์ของพารามิเตอร์และ cmdlets ที่จะใช้สำหรับวัตถุประสงค์ที่แตกต่างกันในบทความนี้:

  • Get-ChildItem cmdlet ใน PowerShell ดึงข้อมูลไดเรกทอรีและรายการไฟล์แบบเรียกซ้ำ
  • -Recurse ใช้เพื่อดึงข้อมูลไดเร็กทอรีแบบวนซ้ำ ซึ่งหมายความว่าไฟล์ โฟลเดอร์ และโฟลเดอร์ย่อยทั้งหมดจะถูกดึงข้อมูล
  • ใช้พารามิเตอร์ -Exclude เพื่อยกเว้นไฟล์และโฟลเดอร์ที่ต้องการ คุณสามารถแก้ไขพารามิเตอร์ -Exclude เพื่อรวมชื่อไฟล์และโฟลเดอร์หลายชื่อโดยคั่นด้วยเครื่องหมายจุลภาค
  • Select-Object cmdlet จะแสดงเฉพาะคุณสมบัติ FullName ของแต่ละรายการ ซึ่งเป็นเส้นทางแบบเต็มไปยังไฟล์หรือโฟลเดอร์

มาดูรายละเอียดตัวอย่างเพื่อเรียนรู้การใช้ cmdlet แต่ละรายการและพารามิเตอร์ที่กล่าวถึงข้างต้น

ใช้ Get-ChildItem Cmdlet

เราสามารถใช้ Get-ChildItem cmdlet เพื่อทำสิ่งต่อไปนี้:

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

ดูตัวอย่างต่อไปนี้เพื่อเรียนรู้

ใช้ Get-ChildItem กับพารามิเตอร์ -Recurse และ Select-Object cmdlet เพื่อดึงข้อมูลไดเรกทอรีแบบเรียกซ้ำ

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Path "D:\Content Writing" -Recurse | Select-Object FullName

เอาท์พุต :

FullName
--------
D:\Content Writing\test1
D:\Content Writing\test2
D:\Content Writing\test1\file1.md
D:\Content Writing\test1\file2.md
D:\Content Writing\test1\file3.md
D:\Content Writing\test2\file4.md
D:\Content Writing\test2\file5.md

ใช้ Get-ChildItem พร้อมด้วยพารามิเตอร์ -Recurse & -Exclude และ Select-Object cmdlet เพื่อดึงข้อมูล สร้างโฟลเดอร์ให้สมบูรณ์และโฟลเดอร์ย่อยซ้ำๆ แต่ไม่รวมไฟล์ file1.txt

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Path "D:\Content Writing" -Recurse -Exclude "file1.md" | Select-Object FullName

เอาท์พุต :

FullName
--------
D:\Content Writing\test1
D:\Content Writing\test2
D:\Content Writing\test1\file2.md
D:\Content Writing\test1\file3.md
D:\Content Writing\test2\file4.md
D:\Content Writing\test2\file5.md

ใช้ Get-ChildItem พร้อมด้วยพารามิเตอร์ -Recurse & -Exclude และ Select-Object cmdlet เพื่อดึงข้อมูล สร้างโฟลเดอร์ให้สมบูรณ์และโฟลเดอร์ย่อยซ้ำๆ แต่ไม่รวมโฟลเดอร์ test2

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Path "D:\folder" -Recurse -Exclude "test2" | Select-Object FullName

เอาท์พุต :

FullName
--------
D:\Content Writing\test1
D:\Content Writing\test1\file1.md
D:\Content Writing\test1\file2.md
D:\Content Writing\test1\file3.md
D:\Content Writing\test2\file4.md
D:\Content Writing\test2\file5.md

คำสั่งดังกล่าวจะแยกโฟลเดอร์ที่ระบุ ไม่ใช่โฟลเดอร์ย่อยหรือไฟล์ อย่างที่คุณเห็น เราได้ดึงข้อมูลตำแหน่งของไฟล์ file4.docx และ file5.docx จากโฟลเดอร์ test2 แต่ไม่ใช่ test2 โฟลเดอร์นั้นเอง

ใช้ Get-ChildItem พร้อมด้วยพารามิเตอร์ -Recurse & -Exclude และ Select-Object cmdlet เพื่อดึงข้อมูล สร้างโฟลเดอร์ให้สมบูรณ์และโฟลเดอร์ย่อยซ้ำๆ แต่ไม่รวมไฟล์ประเภทหรือนามสกุลเดียวกัน

ใช้ Get-ChildItem กับ Select-Object:

Get-ChildItem -Path "D:\Content Writing" -Recurse -Exclude *.md | Select-Object FullName

เอาท์พุต :

D:\Content Writing\test1
D:\Content Writing\test2

นั่นคือทั้งหมดที่เกี่ยวกับวิธีรับไฟล์ทั้งหมดในไดเร็กทอรีแบบเรียกซ้ำใน PowerShell

บทความที่เกี่ยวข้อง