Finde die älteste Datei im Verzeichnis und verschiebe diese

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
jendris
Junior Member
Junior Member
Posts: 21
Joined: 2006-12-05, 14:34 UTC

Finde die älteste Datei im Verzeichnis und verschiebe diese

Post by *jendris »

Hallo,

ist die Aktion im Titel auch automatisiert, z.B. mit Cmd Line in TS ausführbar?
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Finde die älteste Datei im Verzeichnis und verschiebe diese

Post by *Stefan2 »

[face=courier]So, bin zurück, und hier ist mein zweiter Versuch.[/face]


2jendris


Probier mal diese Batch aus:

- Code als Textdatei mit CMD Erweiterung abspeichern.
- Diese Datei auf die Buttonbar ziehen.

- Klick mit rechter Maustaste auf den neuen Button und "Ändern"
REM :: TC-Button
REM ::  Command : "%COMMANDER_PATH%\TOOLs\CMDs\5\Move Oldest.cmd"
REM ::    Pfad zur Batchdatei.
REM ::   Parameter: "%P" "C:\Temp\a"
REM ::     %P ist ein TC Parameter. Drücke die F1-Taste im Button-Dialog für weitere Hilfe.
REM ::     Der Zweite Parameter ist der gewünschte Zielordner, oder zB "%T".
REM :: Startpfad: leer lassen
REM :: Icon: %COMMANDER_PATH%\WCMICONS.DLL
REM :: Tooltip: Move oldest file


Code: Select all

@ECHO OFF
REM ::   Batch for TotalCommander to find and move oldes file. v00.3 by Stefan, 2015-11-21
REM ::   Found at http://ghisler.ch/board/viewtopic.php?p=302388#302388
REM ::   TC-Button
REM ::    Command  : "%COMMANDER_PATH%\TOOLs\CMDs\5\Move Oldest.cmd" 
REM ::       Pfad zur Batchdatei.
REM ::    Parameter: "%P" "C:\Temp\a"
REM ::       %P ist ein TC Parameter. Drücke die F1-Taste im Button-Dialog für weitere Hilfe.
REM ::       Der Zweite Parameter ist der gewünschte Zielordner, oder zB "%T".
REM ::   Startpfad: leer lassen
REM ::   Icon: %COMMANDER_PATH%\WCMICONS.DLL
REM ::   Tooltip: Move oldest file

SET SourceFld=%~1
SET TargetFld=%~2

IF "%SourceFld%"=="" GOTO _ERROR
IF "%TargetFld%"=="" GOTO _ERROR

For /F "tokens=*" %%F in ('dir /O-D /A-D /B "%SourceFld%"') Do @SET oldest=%%F

ECHO Really MOVE "%oldest%" -to- "%TargetFld%" ?
ECHO Strg+C zum Abbrechen. Beliebige Taste zum verschieben.
PAUSE

MOVE "%oldest%" "%TargetFld%"
GOTO :EOF

:_ERROR
ECHO. & ECHO. & ECHO ERROR. Script ends here. & ECHO. & ECHO Usage:
TYPE %0 | Find "REM :: " | Find /v /i "TYPE" & ECHO. & ECHO. & PAUSE
REM EOF


Was macht dieser Befehl?
- Für jede Zeile einer Ausgabe >> for /f %%F in ('') Do etwas
- Was soll gemacht werden? (etwas), hier >> MOVE %%F(aktuelle Zeile) nach "C:\Temp"

- Erstelle die Ausgabe hier mittels >> dir /O-D /A-D /b

Was macht der DIR Befehl?
- benutze 'dir /?' zur Anzeige der Hilfe.
- /O-D >> sortiere nach Datum ( Minuszeichen zur Umkehr der Anzeige: Jüngste zuerst )
- /A-D >> Auflistung anhand von Attribute, hier Directories ( Minuszeichen zur Umkehr der Anzeige: keine Ordner, also nur Dateien )
- /B >> Zeige nur die Namen, ohne Metadaten wie Größe oder Datum und ohne Zusammenfassung.




Der Trick ist hier
- es wird absteigend nach Datum sortiert.
- die For-Schleife schreibt jeweils die aktuelle Zeile in die Variable oldest.
- am Ende ist in der Variable oldest die älteste Datei. Diese wird dann verschoben.



Alle diese Befehle haben eine Hilfe
Lies 'for /?' und 'dir /?' , 'cmd /?' , 'copy /?' , move /?' zur Erklärung.



HTH?
Post Reply