2016-12-06 1 views
0

Ich möchte ein Skript schreiben, das Eingaben vom Benutzer nimmt und ein Wort in einer Datei in das ändert, was der Benutzer eingegeben hat. sah einige Leute es tun wie folgt:Ersetzen von Wörtern in Powershell mit einer Variablen

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

das Problem ist, dass ich ein Wort mit einem Variable ersetzen wollen, so, wenn ich es es zwischen den Kommata nicht funktionieren.

ich will es so etwas sein:

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

ist es eine Möglichkeit, das zu tun?

UPDATE: versucht, es wie folgt aus:

$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 

und es immer noch nicht funktioniert.

+1

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

+0

Welche Version von Powershell verwenden Sie? –

+0

im mit Powershell 2.0 – ofribouba

Antwort

1

Entfernen Sie den Apostroph aus dem $word

Powershell nicht Variablen in einem einzigen Zitat erweitert, es Bedrohung ist als String

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

Für PS Version 2:

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

versucht, es auf diese Weise: $ path = "C: \ Benutzer \ tc98868 \ Desktop \ dsp.json" $ word = read-host "geben Sie bitte das Wort" (Get-Content $ path) .replace ('dsp.tar.gz', $ word) | Set-Content $ path und es funktioniert immer noch nicht .. haben Sie eine Idee warum? – ofribouba

+0

aktualisiert die Antwort PS2 – Avshalom

+0

Großartig! das hat funktioniert. Danke vielmals! – ofribouba

Verwandte Themen