Ersetzen von Text in Nur-Text-Dateien über die Befehlszeile

Ersetzen von Text in Nur-Text-Dateien über die Befehlszeile

Replace Text Plain Text Files From Command Line

Eine sehr nützliche Funktion, die in der Windows-Bibliothek der Befehlszeilentools fehlt, ist die Möglichkeit, Text in Klartextdateien zu ersetzen. Eine Funktion wie diese kann für eine Vielzahl praktischer Aufgaben verwendet werden, die viele Systemadministratoren ausführen, wie zum Beispiel:

  • Aktualisieren Sie die Konfigurations-/INI-Dateien, um UNC-Pfade zu ersetzen.
  • Massenaktualisierung von Benutzerinformationen, die in INI-Dateien auf einem Terminal-/Citrix-Server gespeichert sind.
  • In Verbindung mit Skripten verwenden, um Daten mit Vorlagen bereitzustellen und dann Werte auf die kopierten Dateien anzuwenden.

Unsere Lösung ist ein VBScript, das mit der Visual Basic Replace-Funktion verbunden ist. Indem Sie dieses Skript an einer Stelle in Ihrer Windows PATH-Variable platzieren, steht Ihnen diese Funktionalität jetzt zur Verfügung.



Verwendet

Sobald Sie sich auf Ihrem System befinden, können Sie das Skript aufrufen, indem Sie einfach den Befehl ReplaceText verwenden. Einige Beispiele veranschaulichen, wie Sie dies verwenden können:

Ersetzen Sie das Wort null durch n/a in der Datei C:DataValues.csv:

ReplaceText C:DataValues.csv null n/a

Scannen Sie alle INI-Dateien im Ordner C:Benutzer (+ Unterverzeichnisse) und ersetzen Sie alle Vorkommen von Server=Old mit Server=New mit einer Suche ohne Berücksichtigung der Groß-/Kleinschreibung:

FORFILES /P C:Benutzer /M *.ini /S /C Cmd /C ReplaceText @path Server=Alter Server=Neu /I

Anzeige

Scannen Sie alle CFG-Dateien im Profil des aktuellen Benutzers und ersetzen Sie p@ssw0rd durch PA$$woRd mithilfe einer Suche, bei der die Groß-/Kleinschreibung beachtet wird:

FORFILES /P %UserProfile% /M *.cfg /S /C Cmd /C ReplaceText @path p@ssw0rd PA$$woRd

Mac im abgesicherten Modus booten

Wie Sie unten sehen können, ist das Skript sehr einfach und kann leicht an Ihre speziellen Situationen angepasst werden. Alternativ möchten Sie vielleicht Kopien des Skripts erstellen, die bestimmte Werte hartkodieren, damit Sie den Befehl mit einem Doppelklick ausführen und/oder einfach an andere verteilen können.

Das Skript

'Text ersetzen
'Geschrieben von: Jason Faulkner
'SysadminGeek.com

'Dieses Skript sollte in einem Ordner abgelegt werden, der in der PATH-Variablen Ihres Systems angegeben ist.

'Verwendung (WScript):
'Text ersetzen Dateiname OldText NewText [/I]

' /I (optional) – Beim Textabgleich wird die Groß-/Kleinschreibung nicht beachtet

Setze oArgs = WScript.Arguments

intCaseSensitive = 0
Für i = 3 bis oArgs.Count-1
Wenn UCase(oArgs(i)) = '/I' Then intCaseSensitive = 1
Nächste

Set oFSO = CreateObject('Scripting.FileSystemObject')

Wenn nicht oFSO.FileExists(oArgs(0)) Then
WScript.Echo 'Angegebene Datei existiert nicht.'
Anders
Set oFile = oFSO.OpenTextFile (oArgs (0), 1)
strText = oFile.ReadAll
oDatei.Schließen

strText = Ersetzen(strText, oArgs(1), oArgs(2), 1, -1, intCaseSensitive)

Anzeige

Set oFile = oFSO.OpenTextFile (oArgs (0), 2)
oFile.WriteLine strText
oDatei.Schließen
Ende, wenn

Zusätzliche Bemerkungen

Standardmäßig verwendet Windows WScript, um VBScript (VBS)-Dateien auszuführen. Das einzige Problem, das dies verursachen kann, besteht darin, dass Fehler und/oder Meldungen des Skripts als Popup-Fenster angezeigt werden. Für ein Befehlszeilentool ist es am besten, diese Meldungen in der Konsole anzuzeigen. Es gibt mehrere Möglichkeiten, dies zu erreichen.

Was ist ein intelligenter Briefkasten?

Ändern Sie den Standardhandler von VBScript-Dateien in CScript, indem Sie diesen Befehl über die Eingabeaufforderung ausführen (mit Administratorrechten):

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 das Ausführen von ReplaceText aus einem Batch-Skript in der Regel CScript als verwendete Engine, unabhängig vom Standardhandler. 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

WEITER LESEN