# DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden



## -RedMoon- (31. Januar 2017)

*DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

Tach,

folgendes:

Ich möchte mit einem DOS Batch Programm einen Ordner überwachen, und sobald eine PDF in diesem Ordner landet, soll dieses PDF umbenannt werden.

Das überwachen des Ordners bekomme ich hin. Neue Files werden registriert und umbenannt. Allerdings kommt es nun vor, dass mehrere Files gleichzeitig in diesem Ordner landen. Somit kann ich nicht bestimmen, welches File ich umbenennen soll.

Da habe ich mir gedacht, ich lese den Namen des neuesten oder ältesten Files in eine Variable und benenne dann dieses um.

Sollte gehen, aber wie bestimme ich, welches File das neueste/älteste ist und wie bekomme ich den Namen dieses Files in eine Variable?

jemand eine Idee?


----------



## failwell (7. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

Sollen denn nicht alle Dateien umbenannt werden, die im Ordner landen?
Man kann mit einfachen Schleifen alle Dateien abarbeiten..

Befehl dafür ist:  forfiles

Dein Ansatz hat ja den Fallstrick, dass es theoretisch mehrere Dateien mit dem selben Zeitstempel geben könnte..


----------



## Kusanar (7. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

Ich hätte jetzt auch eher den Ansatz genommen, alle Files durchzugehen die einem gewissen Filter entsprechen (die also noch nicht den neuen Dateinamen haben) und diese dann umzubenennen. Mit Zeitstempel und pipapo wäre mir alles zu unsicher und ungenau.


----------



## failwell (7. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*



Kusanar schrieb:


> Ich hätte jetzt auch eher den Ansatz genommen, alle Files durchzugehen die einem gewissen Filter entsprechen (die also noch nicht den neuen Dateinamen haben) und diese dann umzubenennen. Mit Zeitstempel und pipapo wäre mir alles zu unsicher und ungenau.



Genau das mein ich doch.


----------



## Kusanar (7. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*



failwell schrieb:


> Genau das mein ich doch.



Ja, war ja auch nur nochmal eine Bestätigung


----------



## -RedMoon- (9. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

ok. Dann eine for Schleife.
Wie kann ich dann in einer Batch eine Tabelle auslesen?


----------



## Kusanar (10. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*



-RedMoon- schrieb:


> Wie kann ich dann in einer Batch eine Tabelle auslesen?



Magst du das mal etwas genauer ausführen? Was verstehst du unter einer "Tabelle"? XLS(X), CSV, XML, Plaintext ohne Delimiter? Und was genau möchtest du auslesen?
Mir dünkt langsam, dass deine Aufgabe in Powershell einfacher zu programmieren wäre


----------



## -RedMoon- (10. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

also:
ich habe die Tabelle (csv) in anonymisierter und gekürzter Form hier angehängt.(Ich musste die Datei zippen, sonst konnte ich diese nicht hochladen)

Diese Datei ist Komma bzw. Strichpunkt getrennt. Jede Trennung ist eine Spalte. Am besten in Excel öffnen.

Ich habe in einem Ordner nun eine Datei die heisst: FF_100001.pdf. Das Tool was ich benötige schaut also, ob es einen Eintrag in der Tabelle gibt, die dem Dateinamen entspricht (ohne das FF_). Es soll also nach 100001 in der csv suchen. Findet es die Zeile, soll es die Info aus der Spalte "Product" & "customer lot" (evtl. noch weitere Spalten) in Variablen speichern und daraus den alten Dateinamen ergänzen. Der neue Dateiname müsste dann so aussehen: FF_100001_Produkt3_abcdef.pdf

Eigentlich ganz easy, wenn ich wüsste wie ich die Tabelle mit Dos Batch auslesen kann.
Mit der neueren PowerShell kenne ich mich nicht aus.


----------



## Kusanar (10. Februar 2017)

*AW: DOS Batch: neueste oder älteste Datei in einem Ordner definieren/finden*

Use PowerShell to Read a CSV file and Create Active Directory User Accounts – Hey, Scripting Guy! Blog.
Read a Csv file with powershell and capture corresponding data - Stack Overflow.

Sogar die Ordnerüberwachung kann man über PS lösen, du könntest also alles in einem einzigen PS-Script abbilden:
powershell - check folder for new files.

Wüsste jetzt auf Anhieb nicht, wie das mit der Kommandozeile geht, aber vielleicht findet da irgendein Crack eine Methode.
Meine Meinung: Lies dich lieber in das Thema Powershell ein, damit bist du definitiv besser beraten.


Edith sagt: Hier zum Vergleich der Code für die Batch-Datei: windows - Help in writing a batch script to parse CSV file and output a text file - Stack Overflow.
... Würgs


----------

