2016-12-06 56 views
0

我想編寫一個腳本,該腳本從用戶處獲取輸入並將文件中的單詞更改爲用戶輸入的內容。 看到一些人在做這樣的:使用變量替換powershell中的單詞

(Get-Content c:\temp\test.txt).replace('word1', 'word2') | Set-Content c:\temp\test.txt 

的問題是,我想用一個變量更換一個字,所以當我把它逗號它不會工作之間。

我想這是類似的東西:

$word = read-host " please enter a word" 
(Get-Content c:\temp\test.txt).replace('oldtext', '$word') | Set-Content c:\temp\test.txt 

有沒有辦法做到這一點?

UPDATE: 嘗試過這樣的:

$path = "C:\Users\tc98868\Desktop\dsp.json" 
$word = read-host "please enter a word" 
(Get-Content $path).replace('dsp.tar.gz', $word) | Set-Content $path 

,它仍然不起作用。

+1

相關: http://stackoverflow.com/questions/17144355/how-can-i-replace-every-occurence-of-a-string-in-a-file-with-powershell –

+0

你使用的是什麼版本的PowerShell? –

+0

IM使用PowerShell 2.0 – ofribouba

回答

1

從取下單引號$word

PowerShell不要擴大單引號裏面的變量,它的威脅是作爲一個字符串

$word = read-host " please enter a word" 
(Get-Content c:\temp\test.txt).replace('oldtext', $word) | Set-Content c:\temp\test.txt 

對於PS版2:

(Get-Content c:\temp\test.txt) -replace 'oldtext', $word | Set-Content c:\temp\test.txt 
+0

試着這樣說: $ PATH = 「C:\用戶\ tc98868 \桌面\ dsp.json」 $字=讀 - 主機 「請輸入一個單詞」 (獲取內容$路徑).replace('dsp.tar.gz',$ word)|設置內容$路徑 它仍然無法正常工作..有任何想法爲什麼? – ofribouba

+0

更新了匹配PS2的答案 – Avshalom

+0

太棒了!那工作。非常感謝! – ofribouba