Batch Script - Dateien eines best. Zeitraumes zusammenzählen
Hallo zusammen,
vorweg: ich habe wenig, bis keine Ahnung vom batch scripting. Alles was ich im Internet an Lösungen gefunden habe, ist nicht wirklich das Richtige und/oder ich kann es nicht für meine Zwecke ummodeln...
Aufgabenstellung:
Ich habe mehrere Ordner auf einem Netzwerklaufwerk, in denen nur aktuelle Dateien als PDFs abgespeichert werden. Die Aktualität dieser PDFs wird über das Änderungsdatum definiert und können mehrere Jahre zurückreichen. In diesen Ordnern gibt es jeweils einen Unterordner für archivierte Dateien, der keine Berücksichtigung finden soll.
Ich möchte nun in der Lage sein, mir die monatliche Summe der PDFs eines Jahres, aus allen Ordnern auszugeben.
Also ca. so:
Ordner1: 01.2017 - 2400 Dateien
02.2017 - 3000 Dateien
03.2017 - etc...
Ordner2: .....
Ordner3: .....
Alternativ könnte ich mir auch vorstellen, dass am Anfang abgefragt wird, wo und in welchem Zeitraum die PDFs gesucht werden sollen.
Liese sich das irgendwie realisieren ? Falls das zu aufwändig ist, was gäbe es noch für Möglichkeiten ?
Wie gesagt, ich habe nicht wirklich einen Durchblick, bin aber schon willens mich da einzuarbeiten...
Danke und viele Grüße,
Oli
vorweg: ich habe wenig, bis keine Ahnung vom batch scripting. Alles was ich im Internet an Lösungen gefunden habe, ist nicht wirklich das Richtige und/oder ich kann es nicht für meine Zwecke ummodeln...
Aufgabenstellung:
Ich habe mehrere Ordner auf einem Netzwerklaufwerk, in denen nur aktuelle Dateien als PDFs abgespeichert werden. Die Aktualität dieser PDFs wird über das Änderungsdatum definiert und können mehrere Jahre zurückreichen. In diesen Ordnern gibt es jeweils einen Unterordner für archivierte Dateien, der keine Berücksichtigung finden soll.
Ich möchte nun in der Lage sein, mir die monatliche Summe der PDFs eines Jahres, aus allen Ordnern auszugeben.
Also ca. so:
Ordner1: 01.2017 - 2400 Dateien
02.2017 - 3000 Dateien
03.2017 - etc...
Ordner2: .....
Ordner3: .....
Alternativ könnte ich mir auch vorstellen, dass am Anfang abgefragt wird, wo und in welchem Zeitraum die PDFs gesucht werden sollen.
Liese sich das irgendwie realisieren ? Falls das zu aufwändig ist, was gäbe es noch für Möglichkeiten ?
Wie gesagt, ich habe nicht wirklich einen Durchblick, bin aber schon willens mich da einzuarbeiten...
Danke und viele Grüße,
Oli
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347582
Url: https://administrator.de/forum/batch-script-dateien-eines-best-zeitraumes-zusammenzaehlen-347582.html
Ausgedruckt am: 04.05.2025 um 09:05 Uhr
13 Kommentare
Neuester Kommentar

Powershell
Gruß
gci 'c:\ordner' -Filter *.pdf | group {$_.LastwriteTime.toString('MM\.yyyy')} | select Name,Count

Immer diese Oldtimer Sonderwünsche:
@echo off & setlocal ENABLEDELAYEDEXPANSION
for %%a in ("C:\Ordner\*.pdf") do (
set "tm=%%~ta"
set /a "Datum:!tm:~3,7! += 1"
)
set | findstr "^Datum:[0-1][0-9]\.[1-2][0-9][0-9][0-9]"

Leider stimmen die Ergebnisse nicht...
Kann ich nicht nachvollziehen, hier Testordner mit 30000 Dateien erstellt, laufen lassen, exaktes Ergebnis.!tm:~3,8!
Ist ja auch falsch es soll ja auch nur Monat plus Punkt plus Jahr erfasst werden (7 Stellen), du nimmst hier ein Leerzeichen mit. Vorraussetzung ist hier ein deutsches eingestelltes Datumsformat dd.mm.yyyy in der Ausgabe (Regionsoptionen des Rechners).Vielleicht sollte ich noch erwähnen, daß der Dateiname der pdfs größtenteils nur aus Zahlen besteht und auch u.a. das Datum beinhaltet, wie z.B.:
Macht das etwas aus ?
Nein die kommen hier ja überhaupt nicht zur Anwendung.Macht das etwas aus ?

Der erste Durchlauf auf Ordner1 funktioniert richtig, aber nach dem Durchsuchen des 2. Ordners, stimmt die Anzahl der Dateien nicht mehr (zu viele)...
Vollkommen logisch Da ich aber 6 Ordner habe, habe ich obigen code einfach hintereinander gesetz
Ja nee, das geht eleganter mit einer weiteren FOR /D Schleife über alle Unterordner eines Ordners.@echo off
for /d %%f in ("\\server\name\pfad\pfad\pfad\*") do (
setlocal ENABLEDELAYEDEXPANSION
for %%a in ("%%~f\*.pdf") do (
set "tm=%%~ta"
set /a "Datum:!tm:~3,7! += 1"
)
> "\\server\name\pfad\pfad\pfad\Summe_%%~nxf.txt" (set | findstr "^Datum:[0-1][0-9]\.[1-2][0-9][0-9][0-9]")
endlocal
)

Zitat von @lesclaypool:
Ok, verstehe die Richtung, aber so ganz hab ich es wohl noch nicht verstanden...
Dann geh in dich und schlage erst mal jede Zeile und Befehl nach vor allem set solltest du dir mal anschauen.Ok, verstehe die Richtung, aber so ganz hab ich es wohl noch nicht verstanden...
Wenn ich Dein Script so wie es ist, laufen lasse, funktioniert es auf den ersten Ordner, .txt wird erstellt und dann rattert nur noch "fehlender Operator" durch.
Hier getestet läuft einwandfrei durch, hast du wohl fehlerhaft angepasst/kopiert.