Startseite » wie man » Ersetzen Sie Text in Nur-Text-Dateien über die Befehlszeile

    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