[英]Powershell - replace string in file
我正在嘗試編輯名為 prefs.cfg 的配置文件的內容。 它有兩行:
Server.Name "test"
VoIP.Enabled "1"
我正在嘗試更輕松地替換字符串,但我似乎一直在搞砸。
我寫了一些東西,如果有人能在我的腳本中指出我出錯的地方,我將不勝感激。
$prefs = Get-Content .\prefs.cfg
$prefs | Select-String "Server.Name"
$servername = Read-Host -Prompt "Enter Server Name"
Write-Host $servername
$prefs -replace $servername
$prefs
盡管您將$prefs
傳遞給Select-String
和-replace
,但這些操作的結果並未分配給變量。 所以你以后不能使用它們。
一個參數被傳遞給-replace
。 它期望兩個:替換什么,替換什么。 編輯:如果提供了單個參數,則將其視為“要替換的內容”。 由於沒有提供“用什么替換”,它將被替換為空(即刪除)
Select-String
和-replace
使用正則表達式。 這項任務似乎有點矯枉過正。 Where-Object
和.Replace
完全可以.Replace
這項任務。
$prefs = Get-Content .\prefs.cfg
# Get the line using Where. * is wildcard
$oldServerLine = $prefs | Where-object {$_ -like "Server.Name*"}
$servername = Read-Host -Prompt "Enter Server Name"
Write-Host $servername
# Replace old line with new line. ` is the escape character so you get " as expected.
$newPrefs = $prefs.Replace($oldServerLine,"Server.Name `"$servername`"")
$newPrefs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.