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

แทนที่สตริงในหลายไฟล์ใน PowerShell [ 2 วิธี]


💡 TL;DR หากต้องการแทนที่ String ในหลายไฟล์ ให้ใช้ Get-ChildItem เพื่อรับไฟล์ที่จำเป็นทั้งหมดและวนซ้ำไฟล์โดยใช้ สำหรับแต่ละวัตถุ ในการวนซ้ำแต่ละครั้ง ให้อ่านเนื้อหาไฟล์โดยใช้ Get-Content cmdlet ใช้วิธี replace() เพื่อแทนที่ข้อความและ Set-Content เพื่อบันทึก เนื้อหาในไฟล์
นี่คือตัวอย่างง่ายๆ:

สมมติว่าคุณต้องการแทนที่ช่องว่างทั้งหมดเพื่อขีดเส้นใต้ในไฟล์ txt ทั้งหมดภายใต้โฟลเดอร์ C:\Users\Arpit\Desktop\powershell

แทนที่ข้อความในหลายไฟล์ใน PowerShell:

$DirPath = "C:\Users\Arpit\Desktop\powershell"
 get-childitem $DirPath -recurse -include *.txt |
ForEach-Object {
 (Get-Content $_).replace(" ","_") |
 Set-Content $_
 }

แทนที่สตริงในหลายไฟล์ใน PowerShell

มี 2 วิธีในการแทนที่ String ในหลายไฟล์ใน PowerShell

ใช้เมธอดแทนที่() กับ Get-ChildItem

ต่อไปนี้เป็นขั้นตอนในการแทนที่ String ในหลายไฟล์โดยใช้วิธี replace()

  • เก็บเส้นทางของไฟล์ไว้ในตัวแปร $DirPath
  • ใช้ Get-ChildItem cmdlet เพื่อรับไฟล์ที่จำเป็นทั้งหมดใน $DirPath คุณสามารถใช้ตัวเลือก -include เพื่อเลือกเฉพาะนามสกุลไฟล์ที่ต้องการ
  • ใช้ ForEach-Object เพื่อวนซ้ำแต่ละรายการ
  • ในการวนซ้ำแต่ละครั้ง ให้ใช้ Get-Content cmdlet เพื่ออ่านเนื้อหาของไฟล์ Get-Content อ่านเนื้อหาของรายการ ณ ตำแหน่งเฉพาะที่ระบุโดยเส้นทาง
  • ใช้วิธี replace() เพื่อแทนที่ข้อความเก่าด้วยข้อความใหม่ replace() วิธีการส่งคืนสตริงใหม่และแทนที่ข้อความเก่าแต่ละครั้งด้วยข้อความใหม่
  • สุดท้าย ใช้ Set-Content cmdlet เพื่อแทนที่เนื้อหาของไฟล์ทั้งหมด

แทนที่ข้อความในหลายไฟล์ใน PowerShell โดยใช้วิธีแทนที่:

$DirPath = "C:\Users\Arpit\Desktop\powershell"
 get-childitem $DirPath -recurse -include *.txt |
ForEach-Object {
 (Get-Content $_).replace(" ","_") |
 Set-Content $_
 }

การใช้ตัวดำเนินการแทนที่ด้วย Get-ChildItem

ขั้นตอนส่วนใหญ่จะคล้ายกับวิธีก่อนหน้า เราจะใช้ตัวดำเนินการแทนที่ instread ของวิธี replace() เพื่อแทนที่เนื้อหาในหลายไฟล์

ต่อไปนี้เป็นขั้นตอนในการแทนที่ String ในหลายไฟล์โดยใช้ตัวดำเนินการ replace

  • เก็บเส้นทางของไฟล์ไว้ในตัวแปร $DirPath
  • ใช้ Get-ChildItem cmdlet เพื่อรับไฟล์ที่จำเป็นทั้งหมดใน $DirPath คุณสามารถใช้ตัวเลือก -include เพื่อเลือกเฉพาะนามสกุลไฟล์ที่ต้องการ
  • ใช้ ForEach-Object เพื่อวนซ้ำแต่ละรายการ
  • ในการวนซ้ำแต่ละครั้ง ให้ใช้ Get-Content cmdlet เพื่ออ่านเนื้อหาของไฟล์ Get-Content อ่านเนื้อหาของรายการ ณ ตำแหน่งเฉพาะที่ระบุโดยเส้นทาง
  • ใช้ตัวดำเนินการ replace เพื่อแทนที่ข้อความเก่าด้วยข้อความใหม่ ตัวดำเนินการ replace ส่งคืนสตริงใหม่และแทนที่ข้อความเก่าแต่ละครั้งด้วยข้อความใหม่
  • สุดท้าย ใช้ Set-Content cmdlet เพื่อแทนที่เนื้อหาของไฟล์ทั้งหมด

แทนที่ข้อความในหลายไฟล์ใน PowerShell โดยใช้วิธีแทนที่:

$DirPath = "C:\Users\Arpit\Desktop\powershell"
 get-childitem $DirPath -recurse -include *.txt |
ForEach-Object {
 (Get-Content $_) -replace " ","_" |
 Set-Content $_
 }

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

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