Win Cmd/Powershell Search and Replace

wersi77

Aktives Mitglied
Hallo zusammen,

aktuell benutze ich Windows BAT Dateien mit folgendem Inhalt:

Code:
powershell -Command "(gc text.txt) -replace 'ALT', 'NEU' | Out-File -encoding ASCII text.txt"
powershell -Command "(gc text.txt) -replace 'MAX', 'MORITZ' | Out-File -encoding ASCII text.txt"
powershell -Command "(gc text.txt) -replace 'JOKO', 'KLAAS' | Out-File -encoding ASCII text.txt"

Hierbei soll einfach ein Search/Replace von der Windows CMD ausgeführt werden.
Allerdings ist dieser Code sehr langsam, weil in diesem Fall die Datei 3 mal geschrieben wird.
Lässt sich dieser Code nicht etwas vereinfachen?
Vielen Dank für Eure Hilfe
 

Oneixee5

Top Contributor
Ich bin nicht der Powershell-Experte aber ich denke du kannst es so versuchen:

Code:
$original_file = 'path\filename.abc'
$destination_file =  'path\filename.abc.new'
(Get-Content $original_file) | Foreach-Object {
    $_ -replace 'something1', 'something1aa' `
       -replace 'something2', 'something2bb' `
       -replace 'something3', 'something3cc' `
       -replace 'something4', 'something4dd' `
       -replace 'something5', 'something5dsf' `
       -replace 'something6', 'something6dfsfds'
    } | Set-Content $destination_file
 
G

Gelöschtes Mitglied 65838

Gast
in powershell einfach das das sollte beser sein

((Get-Content -path C:\ReplaceDemo.txt -Raw) -replace 'brown','white') | Set-Content -Path C:\ReplaceDemo.txt
 

wersi77

Aktives Mitglied
Aber, wie kann ich mehrere replacements (ca. 100) in einen einzigen Befehl packen.
Da muss ja irgendein Schleifen-Konstrukt her, wie Oneixee5 es bereits angedeutet hat.
Wie gesagt, es geht um die Verbesserung der Performance. Der Code aus meinem ersten Thread funktioniert ja auch, aber ist halt seeehr langsam.
 

wersi77

Aktives Mitglied
Ich denke, dass ich der Sache näher komme. Aber warum kann ich beispielsweise keine Variable in der Get-Content Anweisung verwenden:
Code:
$NEXTFILE='meinXml'
$content = Get-Content -Path '$NEXTFILE.xml'

Die Variable wird hier nicht aufgelöst. Woran liegt das?
 
G

Gelöschtes Mitglied 65838

Gast
ist es jetzt schneller?

und ja es dürfen keine hoch komma sein weil es sonst als purer text interpretiert wird
 

Neue Themen


Oben