แทนที่สตริงในหลายไฟล์ใน PowerShell [ 2 วิธี]
💡 TL;DR หากต้องการแทนที่ String ในหลายไฟล์ ให้ใช้
Get-ChildItemเพื่อรับไฟล์ที่จำเป็นทั้งหมดและวนซ้ำไฟล์โดยใช้สำหรับแต่ละวัตถุในการวนซ้ำแต่ละครั้ง ให้อ่านเนื้อหาไฟล์โดยใช้Get-Contentcmdlet ใช้วิธี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-ChildItemcmdlet เพื่อรับไฟล์ที่จำเป็นทั้งหมดใน$DirPathคุณสามารถใช้ตัวเลือก-includeเพื่อเลือกเฉพาะนามสกุลไฟล์ที่ต้องการ - ใช้
ForEach-Objectเพื่อวนซ้ำแต่ละรายการ - ในการวนซ้ำแต่ละครั้ง ให้ใช้
Get-Contentcmdlet เพื่ออ่านเนื้อหาของไฟล์Get-Contentอ่านเนื้อหาของรายการ ณ ตำแหน่งเฉพาะที่ระบุโดยเส้นทาง - ใช้วิธี
replace()เพื่อแทนที่ข้อความเก่าด้วยข้อความใหม่replace()วิธีการส่งคืนสตริงใหม่และแทนที่ข้อความเก่าแต่ละครั้งด้วยข้อความใหม่ - สุดท้าย ใช้
Set-Contentcmdlet เพื่อแทนที่เนื้อหาของไฟล์ทั้งหมด
แทนที่ข้อความในหลายไฟล์ใน 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-ChildItemcmdlet เพื่อรับไฟล์ที่จำเป็นทั้งหมดใน$DirPathคุณสามารถใช้ตัวเลือก -include เพื่อเลือกเฉพาะนามสกุลไฟล์ที่ต้องการ - ใช้
ForEach-Objectเพื่อวนซ้ำแต่ละรายการ - ในการวนซ้ำแต่ละครั้ง ให้ใช้
Get-Contentcmdlet เพื่ออ่านเนื้อหาของไฟล์Get-Contentอ่านเนื้อหาของรายการ ณ ตำแหน่งเฉพาะที่ระบุโดยเส้นทาง - ใช้ตัวดำเนินการ
replaceเพื่อแทนที่ข้อความเก่าด้วยข้อความใหม่ ตัวดำเนินการreplaceส่งคืนสตริงใหม่และแทนที่ข้อความเก่าแต่ละครั้งด้วยข้อความใหม่ - สุดท้าย ใช้
Set-Contentcmdlet เพื่อแทนที่เนื้อหาของไฟล์ทั้งหมด
แทนที่ข้อความในหลายไฟล์ใน PowerShell โดยใช้วิธีแทนที่:
$DirPath = "C:\Users\Arpit\Desktop\powershell"
get-childitem $DirPath -recurse -include *.txt |
ForEach-Object {
(Get-Content $_) -replace " ","_" |
Set-Content $_
}นั่นคือทั้งหมดที่เกี่ยวกับวิธีการแทนที่ String ในหลายไฟล์ใน PowerShell