Ersetzen Sie Text in Nur-Text-Dateien über die Befehlszeile
Eine sehr nützliche Funktion, die in der Windows-Bibliothek von Befehlszeilentools fehlt, ist die Möglichkeit, Text in einfachen Textdateien zu ersetzen. Eine Funktion wie diese kann für eine Vielzahl von praktischen Aufgaben verwendet werden, die von vielen Systemadministratoren ausgeführt werden, z.
- Aktualisieren Sie Konfigurations- / INI-Dateien, um UNC-Pfade zu ersetzen.
- Massenaktualisierungsbenutzerinformationen, die in INI-Dateien auf einem Terminal / Citrix-Server gespeichert sind.
- Verwenden Sie diese Option zusammen mit Skripts, um 'Templated'-Daten bereitzustellen, und wenden Sie dann Werte auf die kopierten Dateien an.
Unsere Lösung ist ein VBScript, das mit der Visual Basic Replace-Funktion verbunden ist. Wenn Sie dieses Skript an einem Ort in Ihrer Windows-PATH-Variablen ablegen, steht Ihnen diese Funktionalität jetzt zur Verfügung.
Verwendet
Sobald Sie sich auf Ihrem System befinden, können Sie das Skript einfach mit dem Befehl ReplaceText aufrufen. Einige Beispiele zeigen, wie Sie dies verwenden können:
Ersetzen Sie das Wort "null" durch "n / a" in der Datei C: DataValues.csv:
ErsetzenText "C: DataValues.csv" null nicht zutreffend
Scannen Sie alle INI-Dateien im Ordner C: Users (+ Unterverzeichnisse) und ersetzen Sie alle Vorkommen von „Server = Old“ durch „Server = New“. Verwenden Sie dabei eine Groß- / Kleinschreibung:
FORFILES / P "C: Benutzer" / M * .ini / S / C "Cmd / C ReplaceText @path Server = Alter Server = Neu / I"
Scannen Sie alle CFG-Dateien im aktuellen Benutzerprofil und ersetzen Sie „p @ ssw0rd“ durch „PA $$ woRd“. Dabei wird zwischen Groß- und Kleinschreibung unterschieden:
FORFILES / P "% UserProfile%" / M * .cfg / S / C "Cmd / C ReplaceText @path p @ ssw0rd PA $$ woRd"
Wie Sie unten sehen können, ist das Skript sehr einfach und kann leicht modifiziert werden, um besonderen Situationen Rechnung zu tragen. Alternativ möchten Sie möglicherweise Kopien des Skripts erstellen, die bestimmte Werte hardcodieren, sodass Sie den Befehl mit einem Doppelklick ausführen und / oder ihn leicht an andere Benutzer verteilen können.
Das Skript
'Ersetzen Sie den Text
'Geschrieben von: Jason Faulkner
'SysadminGeek.com
'Dieses Skript sollte sich in einem Ordner befinden, der in der PATH-Variable Ihres Systems angegeben ist.
'Verwendung (WScript):
'ReplaceText FileName OldText NewText [/ I]
'/ I (optional) - Beim Textabgleich wird die Groß- und Kleinschreibung nicht berücksichtigt
Setze oArgs = WScript.Arguments
intCaseSensitive = 0
Für i = 3 bis oArgs.Count-1
Wenn UCase (oArgs (i)) = "/ I", dann ist intCaseSensitive = 1
Nächster
Setze oFSO = CreateObject ("Scripting.FileSystemObject")
Wenn nicht oFSO.FileExists (oArgs (0)), dann
WScript.Echo "Die angegebene Datei ist nicht vorhanden."
Sonst
Set oFile = oFSO.OpenTextFile (oArgs (0), 1)
strText = oFile.ReadAll
oFile.Close
strText = Ersetzen (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)
Set oFile = oFSO.OpenTextFile (oArgs (0), 2)
oFile.WriteLine strText
oFile.Close
Ende wenn
Zusätzliche Bemerkungen
Standardmäßig verwendet Windows WScript, um VBScript-Dateien (VBS-Dateien) auszuführen. Das einzige Problem, das dies verursachen kann, ist, dass Fehler und / oder Meldungen aus dem Skript als Popup-Felder angezeigt werden. Für ein Befehlszeilentool sollten diese Meldungen am besten in der Konsole angezeigt werden. Es gibt mehrere Möglichkeiten, dies zu erreichen.
Ändern Sie den Standardhandler für VBScript-Dateien in CScript, indem Sie diesen Befehl an der Eingabeaufforderung (mit Administratorrechten) ausführen:
CScript // H: CScript
Führen Sie das ReplaceText-Skript explizit mit dem CScript-Befehl aus:
CScript "C: PathToReplaceText.vbs" // B Dateiname OldText NewText [/ I]
Als Sonderfall impliziert die Ausführung von ReplaceText aus einem Batch-Skript in der Regel CScript als Engine, die unabhängig vom Standardhandler verwendet wird. Sie werden dies auf jeden Fall testen wollen, bevor Sie sich auf diese Funktionalität verlassen.
Laden Sie das ReplaceText-Skript von SysadminGeek.com herunter