![Stapelverarbeitung zum Lesen von Textdateien und Ersetzen von Anführungszeichen durch Variablen in einer neuen Datei](https://rvso.com/image/1316775/Stapelverarbeitung%20zum%20Lesen%20von%20Textdateien%20und%20Ersetzen%20von%20Anf%C3%BChrungszeichen%20durch%20Variablen%20in%20einer%20neuen%20Datei.png)
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 for
Schleife:
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 %%a
und 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 „ type
and 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 sed
verfügbar ist.
$ sed -e 's/^\(.*\)$/< Discount Pizza price for phone number is \1 25 % >/' < 25Percent.TXT