Kann nicht in derselben Zeile im Batch-Skript wiedergegeben werden

8

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

    
Bruce 11.06.2016, 00:10
quelle

2 Antworten

2

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 ):

%Vor%     
Stephan 11.06.2016, 06:24
quelle
1

Sie können die Ausgabe des find -Befehls über ein anderes for erhalten und an beliebiger Stelle einfügen:

%Vor%     
Aacini 11.06.2016 18:26
quelle

Tags und Links