Batch: Zeilen in mehreren .txt zählen und Summe in Variable speichern
Hallo & guten Tag!
Ich möchte gerne die Zeilen mehrerer Textdateien zählen und die Summe in einer Variablen speichern.
Für das Zeilenzählen in einer einzelnen Datei benutze ich immer
Wie aber funktioniert das Zählen (und Summieren) der Zeilen über mehrere Dateien hinweg?
Die Anzahl der Dateien, deren Zeilen gezählt und summiert werden sollen, kann unterschiedlich ausfallen.
Der Dateiname ist aber immer nach dem Schema
Datei*.txt
aufgebaut,
also z. B.
Datei1.txt
Datei2.txt
Datei3.txt
...
Hat jemand eine Idee?
Ich möchte gerne die Zeilen mehrerer Textdateien zählen und die Summe in einer Variablen speichern.
Für das Zeilenzählen in einer einzelnen Datei benutze ich immer
for /f "delims=:" %%A in ('findstr /OFF /N .* "Datei.txt"') do set Zeilen=%%A
Wie aber funktioniert das Zählen (und Summieren) der Zeilen über mehrere Dateien hinweg?
Die Anzahl der Dateien, deren Zeilen gezählt und summiert werden sollen, kann unterschiedlich ausfallen.
Der Dateiname ist aber immer nach dem Schema
Datei*.txt
aufgebaut,
also z. B.
Datei1.txt
Datei2.txt
Datei3.txt
...
Hat jemand eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 295028
Url: https://administrator.de/contentid/295028
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo alfabravo,
teste mal folgendes:
Falls Du in Zeile 3 als Wert für
[EDIT]
Man könnte auch
[/EDIT]
Gruß
Friemler
teste mal folgendes:
@echo off & setlocal enabledelayedexpansion
set "FileMask=*.txt"
set /a TotalLines=0
set /a LastFileLines=0
set "LastFileName="
for /f "tokens=1,2 delims=:" %%a in ('findstr /rn "^" "%FileMask%" 2^>NUL') do (
if defined LastFileName if "%%a" neq "!LastFileName!" (
set /a TotalLines+=LastFileLines
)
set "LastFileName=%%a"
set /a LastFileLines=%%b
)
set /a TotalLines+=LastFileLines
echo Gesamte Zeilenzahl: %TotalLines%
Falls Du in Zeile 3 als Wert für
FileMask
einen vollständigen Pfad mit Laufwerksbuchstaben angibst, gibt FINDSTR
auch den vollständigen Pfad für jede Datei aus. Da dieser auch einen Doppelpunkt enthält, musst Du dann in Zeile 9 tokens=1,2
durch tokens=2,3
ersetzen.[EDIT]
Man könnte auch
find /c /v "xyz" "*.txt"
zur Ausgabe der Zeilenanzahl der Dateien benutzen, allerdings muss dann der Suchstring xyz
durch etwas ersetzt werden, was in den Dateien garantiert nicht vorkommt.[/EDIT]
Gruß
Friemler
Oder man nimmt gleich die Powershell, dann reicht ein:
Gruß jodel32
(gc 'C:\Ordner\*.txt').Count
Gruß jodel32