615 Stimmen

Wie können Sie mit der Windows-Befehlszeilenumgebung Text in einer Datei suchen und ersetzen?

Ich schreibe ein Stapeldatei-Skript mit der Windows-Befehlszeilenumgebung und möchte jedes Vorkommen eines Textes in einer Datei (z. B. "FOO") durch einen anderen (z. B. "BAR") ersetzen. Wie lässt sich das am einfachsten bewerkstelligen? Gibt es eingebaute Funktionen?

0voto

jm. Punkte 22852

Herunterladen Cygwin (kostenlos) und verwenden Sie unix-ähnliche Befehle in der Windows-Befehlszeile.

Ihr bester Tipp: sed

11 Stimmen

Cygwin ist böse. Installieren Sie es nicht. Verwenden Sie lieber die unten genannten UnixUtils.

0 Stimmen

@jm Das mag daran liegen, dass man das Ganze zusammen installieren muss, anstatt eine einzelne ausführbare Datei zu verwenden, wenn man das möchte.

2 Stimmen

Verwenden Sie besser die Powershell, die in Windows bereits integriert ist.

0voto

George Birbilis Punkte 2619

Die Werkzeuge Replace und ReplaceFilter finden Sie auch unter https://zoomicon.github.io/tranXform/ (inklusive Quelle). Der 2. ist ein Filter.

Das Tool zum Ersetzen von Zeichenketten in Dateien ist in VBScript (benötigt Windows Script Host [WSH], um in alten Windows-Versionen zu laufen)

Der Filter funktioniert wahrscheinlich nicht mit Unicode, es sei denn, Sie kompilieren mit dem neuesten Delphi (oder mit FreePascal/Lazarus) neu

0voto

Shivam Tyagi Punkte 196

Powershell-Befehl -

Inhalt der Datei abrufen und durch einen anderen Text ersetzen und dann in einer anderen Datei speichern

Befehl -1 (Get-Content Dateiname.xml)| ForEach-Object { $_.replace("some_text", "replace_text").replace("some_other_text", "replace_text") } | Set-Content Dateiname2.xml

Kopieren einer anderen Datei in die ursprüngliche Datei

Befehl2

Copy-Item -Pfad filename2.xml -Ziel filename.xml -PassThru

Entfernen einer weiteren Datei

Befehl 3

Eintrag Dateiname2.xml entfernen

-4voto

Patrick Burwell Punkte 109

Notepad++ erledigt das alles für Sie mit dem Befehl "In Dateien suchen".

enter image description here

enter image description here

3 Stimmen

Und wie kann man es in einem Skript verwenden, um eine Aufgabe zu automatisieren? Und als ich das letzte Mal nachgeschaut habe, war Notepad++ nicht im Lieferumfang von Windows enthalten ( Any built in functions? )

0 Stimmen

Die ursprüngliche Frage wurde von vielen beantwortet. Ich habe auf die unzähligen Antworten geantwortet, in denen nach einer LÖSUNG gesucht wurde. MEINE ist eine endgültige ANTWORT und eine Lösung, die von Ihrem Verwaltungspunkt aus leicht zu implementieren ist: Notepad++ ist KOSTENLOS und funktioniert sehr gut.

0 Stimmen

Vor kurzem musste ich verschachtelte cmd-Dateien in einem robocopy-Skript finden und ersetzen, um Multithreading hinzuzufügen, das am Ende aus über 60 Dateien an verschiedenen Orten bestand. Notepad ++ tat es ALLE in Momenten von der Root. Es ist kostenlos, hat 64-Bit-Unterstützung, wird regelmäßig aktualisiert, und erfordert keine lächerlichen Mengen an Kodierung zu verwenden oder kosten 600 $ Minimum / Jahr. EXZELLENTE Admin-Programmierlösungen. notepad-plus-plus.org/downloads

-6voto

Nadjib Punkte 27

Ich habe dieses Problem mehrmals beim Programmieren unter Visual C++ festgestellt. Wenn Sie es haben, können Sie Visual Studio Find and Replace Utility verwenden. Damit können Sie einen Ordner auswählen und den Inhalt einer beliebigen Datei in diesem Ordner durch einen beliebigen anderen Text ersetzen.

Unter Visual Studio: Bearbeiten -> Suchen und Ersetzen Wählen Sie im geöffneten Dialogfeld Ihren Ordner aus und füllen Sie die Felder "Suchen nach" und "Ersetzen durch" aus. Wir hoffen, dass dies hilfreich ist.

3 Stimmen

Nadjib, Ihre Antwort hilft dem Benutzer nicht weiter, da Sie davon ausgehen, dass er eine Software verwendet, die er nicht erwähnt. Bitte schlagen Sie eine Option vor, für die keine Software erforderlich ist.

0 Stimmen

@Aibrean die Antwort ist nicht sinnvoll, aber nicht aus diesem Grund, es ist der Einstiegspunkt, der falsch ist.

1 Stimmen

Diese Antwort hat die Ablehnung nicht verdient. In einer Windows-Umgebung gibt es nicht viele gute Optionen, um das Problem des Auftraggebers zu lösen. Ich zufällig Code in VS und fand dies eine ausgezeichnete Antwort zu sein, und sparte mir eine Tonne Zeit der Suche nach einer anderen Lösung. Ersetzte 20k+ Vorkommen in über 2k Dateien in 3 Verzeichnissen in weniger als einer Minute.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X