Strings suchen und ersetzen in mehreren Dateien

In mehreren Dateien soll ein bestimmter Text gesucht und falls vorhanden ersetzt werden und gerade kein Tool zur Hand? Die Powershell kann das!

Snippet:

1
Get-ChildItem *.dat | Foreach-Object {Get-Content $_ | Out-String | Foreach-Object {$_.Replace("altes Haus","neues Schloß")} | Set-Content $_}

Achtung:
Die ursprüglichen Dateien werden dabei überschrieben!

Strings suchen und ersetzen in einer Datei

In einer Datei soll ein bestimmter Text gesucht und falls vorhanden ersetzt werden und gerade kein Tool zur Hand? Die Powershell kann das auch!

Snippet:

1
Get-Content "D:\Test.txt" | Foreach-Object {$_.Replace("Alt","Neu")} | Set-Content "D:\Test_Neu.txt"

Hier wird einfach der Inhalt der Datei “Test.txt” eingelesen und durchlaufen. Kommt der String “Alt” vor so wird dieser durch “Neu” ersetzt. Anschließend wird die Datei komplett in eine neue (“Test_Neu.txt”) geschrieben.

Dateien finden die in den letzten 15 Minuten bearbeitet wurden

Möchte man wissen welche Dateien in einem Verzeichnis innerhalb der letzten X Minuten bearbeitet oder erstellt wurden, so hilft das folgende Snippet:

1
Get-ChildItem -Recurse E:\ | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-15)}

Das funktioniert auch mit Stunden oder Jahren. Einfach “AddMinutes” durch “AddHours” oder “AddYears” ersetzen.

Möglich wäre auch:

1
Get-ChildItem -Recurse E:\ | Where-Object {$_ .lastwritetime –lt "2008/1/12"}

Powershellskript direkt aufrufen

Bei den älteren Skriptsprachen wie Batch oder Visual Basic Script war der Aufruf immer sehr einfach per Doppelklick möglich. Die Powershell erlaubt das so erst mal nicht mehr. Der folgende Aufruf zeigt aber, dass es doch noch geht.

Aufruf z.B. für Ausführen oder Eingabeaufforderung:

1
2
powershell.exe -noexit "& X:\My Scripts\Powershell
\TestMe.ps1"