使用 PowerShell 替換檔案中的文字
-
在 PowerShell 中使用
Get-Content
和Set-Content
替換檔案中每個出現的字串 -
在 PowerShell 中使用
File
類替換檔案中每個出現的字串 - 使用 PowerShell 替換多個檔案中每個出現的字串
PowerShell 是一個強大的工具,可以執行不同的檔案和資料夾操作。它允許你建立、複製、刪除、移動、重新命名和檢視系統上的檔案和資料夾。
PowerShell 有一些有用的 cmdlet,可以讀取、寫入和替換檔案中的內容。本教程將介紹使用 PowerShell 替換檔案中出現的每個字串的不同方法。
在 PowerShell 中使用 Get-Content
和 Set-Content
替換檔案中每個出現的字串
Get-Content
獲取指定路徑中的專案內容,例如檔案中的文字。Set-Content
是一個字串處理 cmdlet,允許你編寫新內容或替換檔案中的現有內容。
你可以使用 Get-Content
和 Set-Content
cmdlet 替換檔案中出現的每個字串。我們在目錄 (C:\New
) 中有一個文字檔案 (test.txt
),其內容如下。
Get-Content C:\New\test.txt
輸出:
Welcome to Linux tutorials.
Linux is free.
Linux is powerful.
現在,讓我們藉助 -Replace
引數在 test.txt
檔案中用 PowerShell
替換字串 Linux
的所有出現。Get-Content
周圍需要括號 ()
。
(Get-Content C:\New\test.txt) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
然後檢視 test.txt
檔案的內容以驗證更改。
Get-Content C:\New\test.txt
如你所見,Linux
已成功替換為 PowerShell
。
輸出:
Welcome to PowerShell tutorials.
PowerShell is free.
PowerShell is powerful.
此方法使用字串陣列來查詢和替換檔案中的字串,因為 Get-Content
cmdlet 返回一個陣列。如果 Get-Content
返回單個字串,則更容易替換字串。
你可以使用 -Raw
引數,如下所示。
(Get-Content C:\New\test.txt -Raw) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
在 PowerShell 中使用 File
類替換檔案中每個出現的字串
File
類為常見操作提供靜態方法,例如建立、複製、移動、開啟、刪除和附加到單個檔案。使用 File
類的 Replace()
方法替換指定檔案的內容。
Get-Content C:\New\python.txt
Find the best Python tutorials and learn Python easily from DelftStack.
這是一個使用 File
類方法替換檔案中每次出現的字串的示例。
$string = [System.IO.File]::ReadAllText("C:\New\python.txt").Replace("Python","JavaScript")
[System.IO.File]::WriteAllText("C:\New\python.txt", $string)
ReadAllText()
方法開啟一個文字檔案,讀取該檔案中的所有文字,然後關閉該檔案。
WriteAllText()
方法建立一個新檔案,將特定字串寫入檔案,然後關閉檔案。如果目標檔案已存在於該位置,則會被覆蓋。
驗證在 C:\New\python.txt
中所做的更改。
Get-Content C:\New\python.txt
輸出:
Find the best JavaScript tutorials and learn JavaScript easily from DelftStack.
使用 PowerShell 替換多個檔案中每個出現的字串
上述方法替換單個檔案中的字串;有時,你可能需要替換多個檔案中的相同字串。在這種情況下,你可以使用以下命令替換多個檔案中每次出現的指定字串。
Get-ChildItem 'C:\New\*.txt' | ForEach {
(Get-Content $_) | ForEach {$_ -Replace 'weekly', 'monthly'} | Set-Content $_
}
Get-ChildItem
cmdlet 獲取指定目錄 C:\New
中的檔案。星號 *
萬用字元指定所有副檔名為 .txt
的檔案。
在 ForEach
迴圈中,你可以對陣列中的每個專案執行一個或多個命令。
你可以使用 -Recurse
引數替換指定目錄及其子目錄中檔案中的字串。
Get-ChildItem 'C:\New\*.txt' -Recurse | ForEach {
(Get-Content $_) | ForEach {$_ -Replace 'weekly', 'monthly'} | Set-Content $_
}