Nickname
Passwort | vergessen?

183 anonyme User

1 angemeldetes Mitglied


evinben
evinben
77156 Mitglieder freuen sich auf Dich!
Top-Aktivitäten
Sehen Sie hier, wer zu den aktivsten Mitgliedern der aktuellen Woche zählt:
In den Bereich Editoren & IDE's wechseln ..

Batch-Datei um Dateien zu zählen und abzugleichen

  • Der Beitrag gilt als gelöst
Mitglied: Bemme1990
Geschrieben von Bemme1990 (Level 1 - Frischling)
Erstellt am 21.11.2011, um 17:49:17 Uhr, Permanent-ID: 176595
Dieser Beitrag wurde bisher 818 mal aufgerufen und gilt als gelöst.
Melden Sie sich mit Ihrem Nicknamen an, um diesen Beitrag zu bewerten!
Neutral0 NeutralDruckenBeobachten
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
Kommentar schreibenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
Diskussionsverlauf (10 Kommentare)
thread
bastla
Kommentar bastla schreibt am 21.11.2011, 18:09:39 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Bemme1990
Kommentar Bemme1990 schreibt am 21.11.2011, 18:23:24 Uhr
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...
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
bastla
Kommentar bastla schreibt am 21.11.2011, 18:42:03 Uhr
Hallo Bemme1990!

Als Batch und mit der gewünschten Ausgabeformatierung etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /d %%i in ("L:\Vertrieb\Absatz\Bestellungen 201*") do ( 
03.
    set "Anzahl=0" 
04.
    for /f %%a in ('dir "%%i\*.xls" 2^>nul^|findstr "Datei(en)"') do set "Anzahl=%%a" 
05.
    echo %%~nxi = !Anzahl! 
06.
07.
echo( 
08.
pause
In dieser Fassung würden alle "Jahresordner" ab 2010 geprüft - wenn es tatsächlich nur 2011 bis 2015 sein sollen, dann zB
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Basis=L:\Vertrieb\Absatz" 
03.
 
04.
for /L %%i in (2011,1,2015) do ( 
05.
    set "Ordner=Bestellungen %%i" 
06.
    set "Anzahl=0" 
07.
    for /f %%a in ('dir "%Basis%\!Ordner!\*.xls" 2^>nul^|findstr "Datei(en)"') do set "Anzahl=%%a" 
08.
    echo !Ordner! = !Anzahl! 
09.
10.
echo( 
11.
pause
Grüße
bastla
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Bemme1990
Kommentar Bemme1990 schreibt am 21.11.2011, 20:32:54 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
bastla
Kommentar bastla schreibt am 21.11.2011, 20:43:48 Uhr
Hallo Bemme1990!

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

Grüße
bastla
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Bemme1990
Kommentar Bemme1990 schreibt am 22.11.2011, 09:25:16 Uhr
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?!
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
bastla
Kommentar bastla schreibt am 22.11.2011, 09:31:38 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Bemme1990
Kommentar Bemme1990 schreibt am 22.11.2011, 09:47:16 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
bastla
Kommentar bastla schreibt am 22.11.2011, 10:43:57 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Bemme1990
Kommentar Bemme1990 schreibt am 22.11.2011, 13:58:26 Uhr
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
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.