![]() |
|
|||||||
| Startseite | Registrieren | Hilfe | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |





![]() |
|
|
LinkBack | Themen-Optionen |
|
|
#1 |
|
Administrator
Registriert seit: 31.01.2008
Ort: Earth\EU\DE\Berlin
Alter: 49
Beiträge: 18.147
9 ********* Windows 7 Ultimate Officeversion: Office 2007 |
Neulich fragte mich jemand danach, wie er denn die neueste Datei oder den neuesten Ordner in einem Verzeichnis mithilfe einer Batch-Datei kopieren kann.
Ich vermute mal, er wollte damit den Eingangsordner seines Filesharingprogramms automatisiert leeren, aber über den tatsächlichen Sinn und Zweck lässt sich nur spekulieren. Nun gibt es da bestimmt wesentlich bequemere Methoden, aber mit Batch kommen eben mehr Leute zurecht, als z.B. mit vbs. Um zu ermitteln, welche Datei oder welcher Ordner zuletzt erstellt wurde, bietet der dir -Befehl ja eigentlich genügend Optionen. Ziel ist es also, die Ausgabe von "dir" entsprechend anzupassen, dass sie den Anforderungen entspricht und mit dieser Ausgabe weiter arbeiten zu können. Recht einfache Möglichkeiten bieten sich hier dafür, die neueste Datei, den neuesten Ordner oder das neueste Dateisystemobjekt überhaupt zu bestimmen. Das funktioniert natürlich genauso gut andersherum mit den ältesten Objekten in einem Ordner. Ich habe hier also mal 6 Möglichkeiten im einzelnen rausgesucht. Ob man das Objekt dann umbenennt, verschiebt, kopiert oder löscht, bleibt dann den Bedürfnissen des Anwenders überlassen. Es ist natürlich unklug, die Skripte direkt in das Verzeichnis abzulegen, in dem sie arbeiten sollen. Daher haben alle die Möglichkeit, das Arbeitsverzeichnis festzulegen (set workdir="xxx"), um die Batchdateien in einem nicht bearbeiteten Ordner abzulegen. Alle Skripte auch direkt zum Download: Definition des neuesten Ordners in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set folder= dir %workdir% /AD/B/OGD>%temp%folder.tmp for /f "tokens=1* delims=" %%i in (%temp%folder.tmp) do if not defined folder set "folder=%%i" del %temp%folder.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %folder% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause Definition der neuesten Datei in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set files= dir %workdir% /A-D/B/OG-D>%temp%files.tmp for /f "tokens=1* delims=" %%i in (%temp%files.tmp) do if not defined files set "files=%%i" del %temp%files.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %files% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause Definition des neuesten Dateisystemobjekts (Ordner oder Datei) in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set object= dir %workdir% /B/O-D>%temp%object.tmp for /f "tokens=1* delims=" %%i in (%temp%object.tmp) do if not defined object set "object=%%i" del %temp%object.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %object% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause Definition des ältesten Ordners in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set folder= dir %workdir% /AD/B/OGD>%temp%folder.tmp for /f "tokens=1* delims=" %%i in (%temp%folder.tmp) do if not defined folder set "folder=%%i" del %temp%folder.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %folder% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause Definition der ältesten Datei in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set files= dir %workdir% /A-D/B/OGD>%temp%files.tmp for /f "tokens=1* delims=" %%i in (%temp%files.tmp) do if not defined files set "files=%%i" del %temp%files.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %files% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause Definition des ältesten Dateisystemobjekts (Ordner oder Datei) in einem vorgegebenen Pfad: Code:
::(C)2008 "BuckFix" www.winsupportforum.de @echo off setlocal ::Hier das Arbeitsverzeichnis in Anführungszeichen festlegen, abschliessenden Backslash nicht vergessen: set workdir="C:\Dokumente und Einstellungen\%username%\Eigene Dateien\" set object= dir %workdir% /B/OD>%temp%object.tmp for /f "tokens=1* delims=" %%i in (%temp%object.tmp) do if not defined object set "object=%%i" del %temp%object.tmp ::hier die Aktion festlegen, das echo dient nur als Beispiel. echo %object% ::Pause entfernen, wenn das Skript wie gewünscht arbeitet. pause |
|
|
![]() |
| Lesezeichen |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Zuletzt |
| Verzeichnis wichtiger KB-Artikel | BuckFix | FAQs, Facts+Basics | 2 | 20.04.2009 12:26 |
| Tipp: Detaillierte Systeminfos über VBS-Datei | DangerFreak | Batch und VBS-Skripte | 0 | 08.01.2009 19:19 |
| Älteste Bloggerin | leader | Smalltalk | 4 | 28.07.2008 21:12 |
| CD oder DVD Laufwerk nicht verfügbar oder erzeugt Fehler bei Zugriff | BuckFix | Hardware Tipps und Tricks | 0 | 05.04.2008 10:55 |
| Datei oder Ordner existiert nicht | BuckFix | Windows Vista Tipps und Tricks | 0 | 18.02.2008 00:36 |