Dateien in einem Ordner zählen
Hallo,
ich Schreibe derzeit eine Batch Prozedur und habe folgendes Problem.
Ich kopiere aus einem Quellordner eine bestimmte Datei.
Beispiel: "NameDerDatei 2009.08.04.pdf" in ein anderes Verzeichnis (Zielordner) wo bereits eine Datei "NameDerDatei 2009.08.01.pdf"
vorhanden ist.
Soviel zum Standardfall.
Am Ende habe ich zwei Dateien mit der gleichen Bezeichnung, die sich nur am Ende durch ein Datum unterscheiden.
Im Zielordner soll allerdings nach erfolgreichem Kopieren der neuen Datei die alte gelöscht werden.
Problem ist dabei allerdings, dass wenn im Zielordner vorher keine Datei vorhanden war oder das Kopieren nicht geklappt hat, die alte Datei nicht gelöscht werden darf.
Also habe ich mir überlegt den Inhalt des Zielordners in eine .txt-Datei zu Schreiben.
dir /b "NameDerDatei *.pdf" >test.txt
Dabei steht das * für das Datum im Dateinamen.
Wie bekomme ich das jetzt hin?
Also wie gesagt: Sind zwei Dateien ("NameDerDatei *.pdf") vorhanden kann die alte gelöscht werden.
Sollte sich aber nur eine Datei (nach dem Kopiervorgang) im Zielordner befinden, so darf diese nicht gelöscht werden.
Kann mir jemand bei dem Lösungsansatz helfen?
Ich wäre über eine Antwort sehr dankbar
ich Schreibe derzeit eine Batch Prozedur und habe folgendes Problem.
Ich kopiere aus einem Quellordner eine bestimmte Datei.
Beispiel: "NameDerDatei 2009.08.04.pdf" in ein anderes Verzeichnis (Zielordner) wo bereits eine Datei "NameDerDatei 2009.08.01.pdf"
vorhanden ist.
Soviel zum Standardfall.
Am Ende habe ich zwei Dateien mit der gleichen Bezeichnung, die sich nur am Ende durch ein Datum unterscheiden.
Im Zielordner soll allerdings nach erfolgreichem Kopieren der neuen Datei die alte gelöscht werden.
Problem ist dabei allerdings, dass wenn im Zielordner vorher keine Datei vorhanden war oder das Kopieren nicht geklappt hat, die alte Datei nicht gelöscht werden darf.
Also habe ich mir überlegt den Inhalt des Zielordners in eine .txt-Datei zu Schreiben.
dir /b "NameDerDatei *.pdf" >test.txt
Dabei steht das * für das Datum im Dateinamen.
Wie bekomme ich das jetzt hin?
Also wie gesagt: Sind zwei Dateien ("NameDerDatei *.pdf") vorhanden kann die alte gelöscht werden.
Sollte sich aber nur eine Datei (nach dem Kopiervorgang) im Zielordner befinden, so darf diese nicht gelöscht werden.
Kann mir jemand bei dem Lösungsansatz helfen?
Ich wäre über eine Antwort sehr dankbar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121969
Url: https://administrator.de/forum/dateien-in-einem-ordner-zaehlen-121969.html
Ausgedruckt am: 03.05.2025 um 19:05 Uhr
6 Kommentare
Neuester Kommentar

Servus und willkommen im Forum,
am "schönsten" ist es immer - wenn man(n) die Batch sieht, an der man mithelfen soll.
Als Ansatz reichen (müssen)
Gruß
am "schönsten" ist es immer - wenn man(n) die Batch sieht, an der man mithelfen soll.
dir /b "NameDerDatei *.pdf" >test.txt
wäre dann das einzigste, was derzeit erkennbar ist und daher solltedir /b "NameDerDatei *.pdf" |find "1 Datei" && echo einz
dir /b "NameDerDatei *.pdf" |find "2 Datei" && echo zwei
Als Ansatz reichen (müssen)
Gruß

Zitat von @starspieler:
Hallo und Danke für deine Antwort!
Ja ich weiß, aber leider kann ich das nicht so einfach Kopieren
und hier einfügen.
Die Batch ist ziemlich umfangreich. Alles umzubenennen wäre viel
Arbeit. Müsste das unkenntlich machen.
Hallo und Danke für deine Antwort!
Ja ich weiß, aber leider kann ich das nicht so einfach Kopieren
und hier einfügen.
Die Batch ist ziemlich umfangreich. Alles umzubenennen wäre viel
Arbeit. Müsste das unkenntlich machen.
Servus,
das geht ganz einfach mit Notepad und [Strg] [H] suchen & ersetzen.
Schau mal nach speziell Codeblöcke
Nur mal so ein Ansatz - zum "besseren" Lesegefühl..
Sind die Dateinamen mit einem Datum versehen?
Es "scheint" so...
edit
jau der, wo lesen tutet ist wie immer im Vorteil..
/edit
Wenn ja -würde ich einen ganz anderen Ansatz verfolgen.
(nicht den da unten - das ist deiner (Bastlas?) in Code Blöcken)
%access% %db% /x "Makro Erstelle Liste"
echo Sobald Sie die neue Uebersichtsliste erstellt haben, fahren Sie bitte fort.
rem Erstellt ein Testverzeichnis im Zielordner, um zu
Überprüfen, ob der Benutzer Schreibrechte im Zielverzeichnis hat.
y:
mkdir Y:\Projekte\test
if exist Y:\Projekte\ test goto normal
goto rechteproblem
rem loescht nach erfolgreicher Erstellung das Testverzeichnis.
:normal
rmdir /s /q Y:\Projekte\test
echo Arbeitsschritte:
echo Wechseln in das Verzeichnis der aktuellen Datei
cd /d %quelle%
echo Markieren der aktuellsten Datei als Letzte Datei
for /f "delims=" %%i in ('dir /a-d /b /od *.pdf')
do (set Letzte_Datei=%%i)
echo Kopieren der aktuellsten Datei in das Zielverzeichnis
rem Kopiert die aktuelle Datei aus dem Quellverzeichnis in das Zielverzeichnis
copy "%Letzte_Datei%" %ziel%
:para
set "Jahr=%date:~-4%"
set "Monat=%date:~-7,2%"
set "Tag=%date:~-10,2%"
set "WTag=%date:~-13,2%"
:access
start /wait "Datenbank" %access% %db% /x "Makro Erstelle Liste"
if exist %ziel%\namederdatei.*.pdf del %ziel%\namederdatei.*.pdf
move %quelle%\namederdatei.%jahr%-%monat%-%Tag%.pdf %ziel%\namederdatei.%jahr%-%monat%-%Tag%.pdf
Gruß
Moin starspieler,
ich hätte als zuständiger Moderator dieses Zweigarms eine klitzekleine Bitte
Wenn Du einen Lösungsansatz/Lösungsvorschlag bekommen hast, bei dem nur Du allein bestätigen kannst, ob dieser die Anforderungen erfüllt, dann ist doch sinnvoll zu antworten
Außerdem hat T-Mo ein paar (für seine Verhältnisse) überaus geduldige und freundliche Hinweise gegeben:
...die eigentlich hätten wahrgenommen werden müssen, wenn die Du die Antworten genauso ernst nehmen würdest wie wir Deine Noob-Gehversuche.
Wenn Du erwartest, dass uns Deine Prioritäten interessieren, dann zeige bitte auch Deine Kompromissbereitschaft bezüglich unserer Verhaltensregeln.
Und zu guter Letzt, weil genau diese Hohlphrase immer in meinem Bereich abgeladen wird
Leicht begeisterungsfähige Menschen können sich über eine Antwort vielleicht freuen und/oder für eine Antwort dankbar sein. Aber nicht umgekehrt.
Damals in meinem ersten Mittelstufen-Praktikum, als ich die Rohfassung des Ur-Dudens geschrieben habe, bekam ich immer Punktabzug für so etwas.
Zu Deiner Frage:
Du kannst z.B in allen nicht "j"/"n"-Fällen die Abfrage wiederholen, bis der geneigte DAU es verstanden hat.
Der Schalter /i beim IF-Stringvergleich ignoriert Klein/Gross-Schreibunterschiede (erlaubt "j" und "J" und "n"/"N").
Grüße
Biber
ich hätte als zuständiger Moderator dieses Zweigarms eine klitzekleine Bitte
Zitat von @starspieler:
hallo,
ich habe jetzt dafür eine Lösung gefunden.
Jetzt brauche ich aber noch Hilfe für ein anderes Problem.
Und Du denkst, so ein Feedback ist der Sinn eines Forums?hallo,
ich habe jetzt dafür eine Lösung gefunden.
Jetzt brauche ich aber noch Hilfe für ein anderes Problem.
Wenn Du einen Lösungsansatz/Lösungsvorschlag bekommen hast, bei dem nur Du allein bestätigen kannst, ob dieser die Anforderungen erfüllt, dann ist doch sinnvoll zu antworten
- "Danke, das war der richtige Tipp"
- "Netter Versuch, aber das hilft mir nicht über'n Winter, weil...."
- "Habe Deinen Ansatz nicht ausprobiert, weil mir zwischenzeitlich eine ganz andere idee kam, und zwar habe ich es jetzt so gelöst..."
Außerdem hat T-Mo ein paar (für seine Verhältnisse) überaus geduldige und freundliche Hinweise gegeben:
am "schönsten" ist es immer - wenn man(n) die Batch sieht, an der man mithelfen soll.
Schau mal nach Formatierungshilfe speziell Codeblöcke
...die eigentlich hätten wahrgenommen werden müssen, wenn die Du die Antworten genauso ernst nehmen würdest wie wir Deine Noob-Gehversuche.
Wenn Du erwartest, dass uns Deine Prioritäten interessieren, dann zeige bitte auch Deine Kompromissbereitschaft bezüglich unserer Verhaltensregeln.
Und zu guter Letzt, weil genau diese Hohlphrase immer in meinem Bereich abgeladen wird
Ich wäre über eine Antwort sehr dankbar
Leicht begeisterungsfähige Menschen können sich über eine Antwort vielleicht freuen und/oder für eine Antwort dankbar sein. Aber nicht umgekehrt.
Damals in meinem ersten Mittelstufen-Praktikum, als ich die Rohfassung des Ur-Dudens geschrieben habe, bekam ich immer Punktabzug für so etwas.
Zu Deiner Frage:
Du kannst z.B in allen nicht "j"/"n"-Fällen die Abfrage wiederholen, bis der geneigte DAU es verstanden hat.
....
:Abfrage
set /p choice=Moechten Sie den Kopiervorgang fortsetzen? (j/n)
if /i "%choice%" == "j" goto auswahlja
if /i "%choice%" == "n" goto auswahlnein
echo Bitte nur J oder N eingeben!
goto :Abfrage
Der Schalter /i beim IF-Stringvergleich ignoriert Klein/Gross-Schreibunterschiede (erlaubt "j" und "J" und "n"/"N").
Grüße
Biber