Stapelverarbeitung zum Lesen von Textdateien und Ersetzen von Anführungszeichen durch Variablen in einer neuen Datei

Stapelverarbeitung zum Lesen von Textdateien und Ersetzen von Anführungszeichen durch Variablen in einer neuen Datei

Ich habe Pizzalisten von Kunden, die ich in 5 separaten TXT-Dateien aus meiner Datenbank in diesem Format gespeichert habe:

Filename = 25Percent.TXT
"555-1211"
"555-1212"
"555-1223"

Jede Liste besteht aus einer Telefonnummer in Anführungszeichen und ist unterschiedlich lang.

Erste Frage
Ich habe zwei Variablensätze, die ich durch jedes Anführungszeichen in den 5 Textdateien ersetzen möchte.
Die beiden Variablen würden wie folgt aussehen:

Var A = < Discount Pizza price for phone number is "
Var B = " 25 % >

Ich möchte eine Batchdatei ausführen, die jede Zeile der Textdatei liest und Folgendes in eine andere Textdatei schreibt, wobei die Anführungszeichen durch die Variablen ersetzt werden:

New Filename = 25Percentfinished.TXT
< Discount Pizza price for phone number is "555-1211" 25 % >
< Discount Pizza price for phone number is "555-1212" 25 % >
< Discount Pizza price for phone number is "555-1223" 25 % >

Dann würde ich wiederholen für30 Prozent.txt,35Prozent.txt,40 Prozent.txtund schlussendlich50Prozent.txtDatei.

Zweite Frage
Ich möchte auch die 5 neuen Dateien zusammenfügen

Antwort1

Es ist eine einfache forSchleife:

for /f "tokens=*" %%a in (25Percent.txt) do (
    echo ^< Discount Pizza price for phone number is %%a 25 %%% ^>>>25Percentfinished.txt
)

Siehe for /?zur Verwendung. Dadurch wird die Datei Zeile für Zeile verarbeitet, wobei die Zeile in die Variable eingelesen %%aund die geänderte Zeile an die andere Datei angehängt wird. Die <und >werden mit maskiert ^(wodurch ^<und entsteht ^>), weil sie in der Eingabeaufforderung eine besondere Bedeutung haben. Das %wird mit „maskiert“, %%%weil es auch ein Sonderzeichen ist, aber nicht wie die anderen maskiert werden kann.


Sie können mehrere Textdateien wie folgt kombinieren:

copy file1.txt + file2.txt + file3.txt destination.txt

Oder Sie können eine Schleife mit „ typeand append ( >>)“ ausführen (dadurch werden alle Dateien im aktuellen Verzeichnis in alphabetisch aufsteigender Reihenfolge kombiniert):

for %%a in (*.txt) do (
    type %%a>>destination.txt
)

Antwort2

Sie geben das Betriebssystem nicht an, daher stelle ich Ihnen eine funktionierende Lösung zur Verfügung, sofern diese sedverfügbar ist.

$ sed -e 's/^\(.*\)$/< Discount Pizza price for phone number is \1 25 % >/' < 25Percent.TXT

verwandte Informationen