bemme1990
Goto Top

Batch-Datei um Dateien zu zählen und abzugleichen

Hy Leute,

ich erstelle gerade einen Prozess, womit bestimmte Produkte beschafft werden sollen.

Sofern ein Kundenbetreuer eine Bestellung auslöst, erscheint diese in einem bestimmten Ordner.
Die Bestellungen werden via VBA eingelesen und weiterverarbeitet.

Mein Problem:

Die Bestellungen sind nach Jahren sortiert. Wenn ich meine Ordner auf neue Dateien prüfen möchte, dann muss mal für 5 Jahre durchmachen und das fast stündlich.

Mein Vorschlag:

Eine Batch-Datei, welche alle .xls Dateien in einem bestimmten Ordner zählt.
Wenn Dateien vorhanden, dann bitte den Ordner inkl. Anzahl nennen.

Problem:

Ich weiß nicht, was ich schreiben muss.

Hier mein Daten-Stammbaum:

L:\Vertrieb\Absatz\Bestellungen 2011
...
Bestellungen 2015

In diesen Ordnern gibt es nochmal einen Unterordner "Archiv", welcher nicht mit geprüft werden sollen, da dort die bereits abgearbeiteten Meldungen stehen.

Kann mir jemand helfen?!

vielen Dank
Bemme1990

Content-Key: 176595

Url: https://administrator.de/contentid/176595

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: bastla
bastla 21.11.2011 um 18:09:39 Uhr
Goto Top
Hallo Bemme1990 und willkommen im Forum!

So ganz klar ist mir zunächst die Anforderung nicht (Geht es tatsächlich nur darum, die Anzahl an Excel-Dateien in einem bestimmten Ordner zu ermitteln, oder sollen - vermutlich - doch mehrere Ordner untersucht werden?) und auch nicht, weshalb Batch und nicht VBA dazu verwendet werden soll ...

Außerdem: Sollten neue Dateien nicht am Erstellungs- / Änderungsdatum zu erkennen sein - weshalb dann die Anzahl der "xls"-Dateien?

Und schließlich: Wie soll das Ergebnis konkret aussehen (Textdatei, Excel, Bildschirmausgabe)?

Für letztere würde ein Beispiel zur Direkteingabe in CMD etwa so aussehen:
for /d %i in ("L:\Vertrieb\Absatz\Bestellungen 201*") do @for /f %a in ('dir "%i\*.xls" 2^>nul^|findstrDatei(en)"') do @echo %a Dateien in %i
Grüße
bastla
Mitglied: Bemme1990
Bemme1990 21.11.2011 um 18:23:24 Uhr
Goto Top
Hy Bastla,

ich verwende kein vba, weil es einige Mitarbeiter gibt, welche diese Sachen benutzen.
admit will ich die Probleme mit Schriebschutz etc. umgehen, außerdem möchte ich es einfach mal testen.

Man kann es nicht an dem Erstellungsdatum aus machen.

es ist so, ich habe "Bestellungen 2011", wenn die neue Bestellung via vba eingelesen wurde, dann wird eine Kopie unter "Bestellungen 2011/Archiv" abgespeichert und die Ursprungsdatei gelöscht.
Somit ist dann Bestellungen 2011 wieder leer und "Bestellungen 2011/Archiv" mit 1 Datei gefüllt.

Jetzt sollte er halt nur den Oberordner überprüfen, damit er mir die Archive nicht anzeigt.

Also:
Bestellungen 2011 = 0
Bestellungen 2012 = 0
Bestellungen 2013 = 0
Bestellungen 2014 = 0
Bestellungen 2015 = 0

Zur Ausgabe: Ein Kommandofenster mit diesen Info's wäre toll...
Mitglied: bastla
bastla 21.11.2011 um 18:42:03 Uhr
Goto Top
Hallo Bemme1990!

Als Batch und mit der gewünschten Ausgabeformatierung etwa so:
@echo off & setlocal enabledelayedexpansion
for /d %%i in ("L:\Vertrieb\Absatz\Bestellungen 201*") do (  
    set "Anzahl=0"  
    for /f %%a in ('dir "%%i\*.xls" 2^>nul^|findstr "Datei(en)"') do set "Anzahl=%%a"  
    echo %%~nxi = !Anzahl!
)
echo(
pause
In dieser Fassung würden alle "Jahresordner" ab 2010 geprüft - wenn es tatsächlich nur 2011 bis 2015 sein sollen, dann zB
@echo off & setlocal enabledelayedexpansion
set "Basis=L:\Vertrieb\Absatz"  

for /L %%i in (2011,1,2015) do (
    set "Ordner=Bestellungen %%i"  
    set "Anzahl=0"  
    for /f %%a in ('dir "%Basis%\!Ordner!\*.xls" 2^>nul^|findstr "Datei(en)"') do set "Anzahl=%%a"  
    echo !Ordner! = !Anzahl!
)
echo(
pause
Grüße
bastla
Mitglied: Bemme1990
Bemme1990 21.11.2011 um 20:32:54 Uhr
Goto Top
Hy Bastla,

du bist heut mein persönlicher Held.

Der erste Code ist super....
Er kann ruhig alle Jahrgänge durchgehen...bislang haben wir bloß bestellungen bis 2015, nächstes jahr aber bis 2016.

Vielen Vielen Dank...
viele grüße

Chris
Mitglied: bastla
bastla 21.11.2011 um 20:43:48 Uhr
Goto Top
Hallo Bemme1990!

Freut mich, wenn's hilft ... face-smile

Grüße
bastla
Mitglied: Bemme1990
Bemme1990 22.11.2011 um 09:25:16 Uhr
Goto Top
Ich hätte doch nochmal eine Frage:

Gibt es da bei Netzwerkpfaden besonderheiten?!

Zu Hause hat es unter C:\... super geklappt.
Auf Arbeit klappt es unter C:\... auch super.

Wenn ich aber das Netzlaufwerk L:\ prüfen möchte, zeigt er nichts an, außer "Bitte beliebige Taste drücken"

Weißt du warum?!
Mitglied: bastla
bastla 22.11.2011 um 09:31:38 Uhr
Goto Top
Hallo Bemme1990!

Sollte für ein gemaptes Laufwerk (oder einen UNC-Pfad) genauso funktionieren ...

Du könntest direkt in der CMD-Shell einmal probeweise
dir "L:\Vertrieb\Absatz\Bestellungen 2011\*.xls"
eingeben (vorzugsweise, wenn es auch gerade eine Datei im entsprechenden Ordner gibt) und das Ergebnis interpretieren / posten ...

Grüße
bastla
Mitglied: Bemme1990
Bemme1990 22.11.2011 um 09:47:16 Uhr
Goto Top
Ergebnis:

Datenträger in Laufwerk L:\ ist vdb_gruppe
Volumennummer B40C-D32E

Verzeichnis von ...

22.11.2011 09:42 11.776 Kunde1.xls
...

2 Dateien
0 Verzeichnisse
Mitglied: bastla
bastla 22.11.2011 um 10:43:57 Uhr
Goto Top
Hallo Bemme1990!

Wenn es tatsächlich "2 Dateien" (also ohne Klammern) heißt, müsstest Du natürlich die Zeile 4 (bzw Zeile 7 im zweiten Batch) anpassen ...

Grüße
bastla
Mitglied: Bemme1990
Bemme1990 22.11.2011 um 13:58:26 Uhr
Goto Top
es heißt Datei(en)....daran lag es aber nicht.

Es funktionierte nicht, weil ich ein Umlaut im Pfad hatte

"L:\Vertrieb\Absatzbücher\Bestellungen 2011\*.xls" hab ich jetzt zu Absatzbuch gemacht...

Jetzt geht alles und nochmal vielen Dank

Gruß Chris