Ich habe txt-Dateien, die mehrere Zeilen enthalten, und ich muss ein Protokoll erstellen, um die folgenden Informationen in einem Protokoll zu speichern:
Dateiname
Zuletzt geändert
Anzahl der Zeilen mit dem Wort "gültig"
Ich habe eine .bat-Datei zusammengestellt, aber sie teilt die Ausgabe in zwei Zeilen auf.
%Vor% Mit type nul lösche ich den Inhalt der Datei FilesReceived.txt. Dann durchlaufe ich die Dateien vom Typ log.
Dann zähle ich Zeilen, die das Wort gültig enthalten mit find / c und ich gebe auch den letzten geänderten Zeitstempel zurück.
Die Ausgabe sieht jedoch so aus:
---------- transaction_20160505_1005A.log: 6492
10/06/2016 04:37 pm.
Ich weiß nicht, was diese Striche erzeugt. Letztendlich möchte ich wie folgt eine Zeile pro Protokolldatei haben:
transaction_20012B.log: 6492 10/06/2016 04:37 pm.
Ich hoffe, ihr könnt mir helfen.
Danke,
Bruce
find
gibt die Gedankenstriche aus, wenn eine Datei verarbeitet wird. Bei der Verarbeitung von STDIN wird dies nicht ausgeführt ( type file.ext /c |find "string"
gibt nur die Anzahl aus).
Es gibt einen Trick, ohne Zeilenvorschub zu schreiben: <nul set /p"=Hello"
Wenn Sie mit einer anderen Reihenfolge leben können, ist es ziemlich einfach, es zusammenzustellen ::
%Vor% Wenn Sie Ihre Bestellung behalten möchten, ist es etwas komplizierter: Sie können find
nicht dazu zwingen, ohne Zeilenvorschub zu schreiben, also müssen Sie einen Trick verwenden (ein anderes for
):
Tags und Links batch-file