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

PowerShell: วิธีย้ายและเปลี่ยนชื่อไฟล์


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อย้ายและเปลี่ยนชื่อไฟล์หลายไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งโดยใช้ PowerShell:

Get-ChildItem *.txt | 
    ForEach-Object{
        $newName = $_.FullName -replace 'information', 'info'
        Rename-Item $_ $newName
        Move-Item $newName -destination "c:\users\bobbi\data2"
}

ตัวอย่างนี้จะเปลี่ยนชื่อไฟล์ .txt ทั้งหมดในไดเร็กทอรีปัจจุบันโดยแทนที่ "information" ด้วย "info" ในชื่อไฟล์ จากนั้นย้ายไปยังโฟลเดอร์ใหม่ชื่อ data2

ไฟล์ทั้งหมดที่ไม่มีนามสกุล .txt ในไดเรกทอรีปัจจุบันจะยังคงไม่เปลี่ยนแปลง

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีย้ายและเปลี่ยนชื่อไฟล์ใน PowerShell

สมมติว่าไดเรกทอรีปัจจุบันของเรามีเส้นทางต่อไปนี้:

C:\Users\bobbi\data1

เราสามารถพิมพ์ Get-ChildItem เพื่อแสดงรายการไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันนี้:

สมมติว่าเราต้องการเปลี่ยนชื่อไฟล์ทั้งหมดที่มีนามสกุล .txt โดยแทนที่สตริง “information” ด้วย “info” ในแต่ละชื่อไฟล์ จากนั้นย้ายแต่ละไฟล์เหล่านี้ไปยังชื่อโฟลเดอร์ใหม่ ข้อมูล2.

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการดังกล่าว:

Get-ChildItem *.txt | 
    ForEach-Object{
        $newName = $_.FullName -replace 'information', 'info'
        Rename-Item $_ $newName
        Move-Item $newName -destination "c:\users\bobbi\data2"
}

ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:

เมื่อเราใช้ Get-ChildItem cmdlet เพื่อดูเนื้อหาของโฟลเดอร์ data2 เราจะเห็นว่าแต่ละไฟล์ .txt จาก โฟลเดอร์ data1 ได้รับการเปลี่ยนชื่อโดยแทนที่สตริง "information" ด้วย "info" แทน

หากเราใช้ Get-ChildItem cmdlet อีกครั้งเพื่อดูไฟล์ในไดเรกทอรีปัจจุบันของเรา เราจะเห็นว่าไฟล์ .txt แต่ละไฟล์ที่เราเปลี่ยนชื่อไม่อยู่ในนั้นอีกต่อไป ไดเรกทอรี:

มีเพียงไฟล์ .csv เท่านั้นที่ยังคงอยู่ในไดเรกทอรีปัจจุบัน ซึ่งเราไม่ได้เปลี่ยนชื่อหรือย้าย

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