Kann mir jemand sagen, wie man eine Batch-Datei in Windows verwendet ... wie man aus einer Datei liest und string = bath
aus einer Datei mit = bath Abath Bbath XYZbathABC
durch string ersetzt, hello
so dass die Ausgabe wie folgt isthello Ahello Bhello XYZhelloABC
batch-file
EnoshBansode
quelle
quelle
;
da dies die Standardoption für isteol
. Zeilen mit einer oder mehreren!
werden mit diesem Code nicht korrekt verarbeitet, da für diesen Code eine aktivierte verzögerte Erweiterung erforderlich ist. ECHO- Ausgabenecho is off.
im Fall einer Umgebungsvariablen werdenmodified
gelöscht, da die Ersetzungszeichenfolge eine leere Zeichenfolge ist und die Suchzeichenfolge mit der gesamten Zeile übereinstimmt. Die Suchzeichenfolge darf kein Gleichheitszeichen enthalten, da sie=
im Substitutionsausdruck eine besondere Bedeutung hat.set "modified1=...
?BEARBEITEN
Ich habe zunächst nicht gesehen, dass vor dem Ersetzen die Zeichenfolge aus einer Datei gelesen werden soll.
Nun, mit einer Batch-Datei haben Sie nicht viel Möglichkeiten, an Dateien zu arbeiten. In diesem speziellen Fall müssten Sie eine Zeile lesen, das Ersetzen durchführen, dann die geänderte Zeile ausgeben und dann ... Was dann? Wenn Sie alle Vorkommen von 'bath' in der gesamten Datei ersetzen müssen, müssen Sie eine Schleife verwenden:
Sie können einer Datei eine Umleitung hinzufügen:
Oder Sie können die Umleitung auf die Batchdatei anwenden. Es muss eine andere Datei sein.
BEARBEITEN 2
Hinzugefügt richtige Hin- und Herschalten der verzögerten Expansion für die korrekte Verarbeitung von einigen Zeichen , die spezielle Bedeutung mit Batch - Skript - Syntax hat, wie
!
,^
et al. (Danke, jeb !)quelle
cscript
undPowerShell
da zu sein, ich denke manchmal, dass sie Batch-Dateien komplett verschrottet hätten, wenn nicht die wahrscheinlich enorme Anzahl von Skripten gewesen wäre, die im gesamten Windows-Bereich noch verwendet werden.!
und^
im Inhalt sicher zu sein, indem die verzögerte Erweiterung ein-Um das Überspringen von Leerzeilen zu vermeiden (Lesbarkeit in der conf-Datei angeben), kombiniere ich eine flache und eine jeb-Antwort ( hier ) auf Folgendes :
quelle
chcp 65001
für UTF8: Siehe Echo UTF-8-Zeichen im Windows-StapelUm Probleme mit dem Batch-Parser (z. B. Ausrufezeichen) zu vermeiden, lesen Sie Problem beim Suchen und Ersetzen der Batch-Datei .
Nach der Änderung des Skripts von aflat werden Sonderzeichen wie Ausrufezeichen eingefügt .
quelle
Ich habe eine Funktion dafür erstellt, Sie rufen sie nur in einem Stapelverarbeitungsprogramm auf, wenn Sie mehr Code benötigen.
Die Arbeitsweise ist im Grunde die gleiche wie bei den anderen, da dies der beste Weg ist, dies zu tun.
Hier ist der Link, wo ich diese Funktion habe
quelle
Um das Überspringen von Leerzeilen zu vermeiden, ersetzen Sie diese einfach:
mit diesem:
quelle
Wenn Sie Ruby für Windows haben ,
quelle