Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben
Hallo!
Jeder kennt das Problem, dass man viele Bilder mit der Digitalkamera gemacht hat und die Bilder nun systematisch geordnet haben möchte.
Nun gibt es fast zu jeder Kamera eine entsprechende Software. Aber diese wiil nicht jeder installieren, weil sie meist eine abgespeckte Version enthält.
Ich möchte erreichen, dass ein Script das Erstellungsdatum einer Datei ausliest und die Datei dann in einen Ordner mit der Formatierung
yyyy_mm_dd (z.B. 2009_12_03) kopiert oder verschiebt. Sollte der Ordner noch nicht existieren, dann soll er angelegt werden.
Mit der erwähnten Kamerasoftware ist dies meist möglich. Aber nur deswegen die Software installieren, deren Rest ich nicht benötige?
Aber vielleicht kann mir jemand aus dem Forum helfen.
Vielen Dank!
Jeder kennt das Problem, dass man viele Bilder mit der Digitalkamera gemacht hat und die Bilder nun systematisch geordnet haben möchte.
Nun gibt es fast zu jeder Kamera eine entsprechende Software. Aber diese wiil nicht jeder installieren, weil sie meist eine abgespeckte Version enthält.
Ich möchte erreichen, dass ein Script das Erstellungsdatum einer Datei ausliest und die Datei dann in einen Ordner mit der Formatierung
yyyy_mm_dd (z.B. 2009_12_03) kopiert oder verschiebt. Sollte der Ordner noch nicht existieren, dann soll er angelegt werden.
Mit der erwähnten Kamerasoftware ist dies meist möglich. Aber nur deswegen die Software installieren, deren Rest ich nicht benötige?
Aber vielleicht kann mir jemand aus dem Forum helfen.
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 03.12.2009 um 18:12:14 Uhr
Moin Traveller,
willkommen im Forum.
Danke für die vorbildlich saubere Frageformulierung/Problembeschreibung.
Grüße Biber
willkommen im Forum.
Danke für die vorbildlich saubere Frageformulierung/Problembeschreibung.
Grüße Biber
Content-ID: 130860
Url: https://administrator.de/contentid/130860
Ausgedruckt am: 20.11.2024 um 09:11 Uhr
14 Kommentare
Neuester Kommentar
@Echo off
set file=%1
set fdate=%~t1
set fday=%fdate:~0,2%
set fmonth=%fdate:~3,2%
set fyear=%fdate:~6,4%
set folname=%fyear%_%fmonth%_%fday%
:work
if exist %folname%\NUL (
Echo Verschiebe Datei %file% nach %folname%
move %file% "%folname%\"%file%
) else (
Echo Erstelle Verzeichnis %folname%
md "%folname%"
goto work
)
Aus dem ordner ausführen, in dem die Bilder liegen
verschiebt eine Datei in einen ordner der nach dem letzten Änderungszeitpunkt benannt ist
huch.. beim letzten Edit ist ein Satz flöten gegangen... du musst als aufrufparameter eine Datei angeben, die wird dann in den entsprechenden verschoben.
kopieren ist übrigens der falsche name... der bilder werden bloß verschoben
wenn du kurz warten kannst, kann ich dir auch 'n script anbieten, dass einen kompletten ordner durchkämmt
kopieren ist übrigens der falsche name... der bilder werden bloß verschoben
wenn du kurz warten kannst, kann ich dir auch 'n script anbieten, dass einen kompletten ordner durchkämmt
du kannst sie genausogut erst von der Karte auf den PC schieben, einfach in i-ein verzeichnis, da steckst du dann die kopieren.bat dazu und schon hast du deine ordnung. hier jetzt die beiden dateien:
builder.bat:
worker.bat:
Updated Version, kopiert sich nicht selbst
builder.bat:
@Echo off
for %%a in (*) do (
if NOT "%%a"=="builder.bat" (
if NOT "%%a"=="worker.bat" (
Echo.
Echo Verarbeite Datei %%a
Echo.
Echo ________________________________
Echo.
call worker.bat "%%a"
)
)
)
worker.bat:
@Echo off
set file=%1
set fdate=%~t1
set fday=%fdate:~0,2%
set fmonth=%fdate:~3,2%
set fyear=%fdate:~6,4%
set folname=%fyear%_%fmonth%_%fday%
:work
if exist %folname%\NUL (
Echo Verschiebe Datei %file% nach %folname%
Echo ----
move %file% "%folname%\"%file%
) else (
Echo Erstelle Verzeichnis %folname%
Echo ----
md "%folname%"
goto work
)
Updated Version, kopiert sich nicht selbst
Zitat von @Snowman25:
du kannst sie genausogut erst von der Karte auf den PC schieben, einfach in i-ein verzeichnis, da steckst du dann die kopieren.bat
dazu und schon hast du deine ordnung. hier jetzt die beiden dateien:
builder.bat:
worker.bat:
Updated Version, kopiert sich nicht selbst
du kannst sie genausogut erst von der Karte auf den PC schieben, einfach in i-ein verzeichnis, da steckst du dann die kopieren.bat
dazu und schon hast du deine ordnung. hier jetzt die beiden dateien:
builder.bat:
> @Echo off
> for %%a in (*) do (
> if NOT "%%a"=="builder.bat" (
> if NOT "%%a"=="worker.bat" (
> Echo.
> Echo Verarbeite Datei %%a
> Echo.
> Echo ________________________________
> Echo.
> call worker.bat "%%a"
> )
> )
> )
>
worker.bat:
@Echo off
> set file=%1
> set fdate=%~t1
> set fday=%fdate:~0,2%
> set fmonth=%fdate:~3,2%
> set fyear=%fdate:~6,4%
> set folname=%fyear%_%fmonth%_%fday%
> :work
> if exist %folname%\NUL (
> Echo Verschiebe Datei %file% nach %folname%
> Echo ----
> move %file% "%folname%\"%file%
> ) else (
> Echo Erstelle Verzeichnis %folname%
> Echo ----
> md "%folname%"
> goto work
> )
Updated Version, kopiert sich nicht selbst
besteht die möglichkeit die sortierten bilder / ordner in ein anderes verzeichnis zu verschieben!?
z.b. die bilder liegen im ordner "c:\1" sollen aber in den ordner "c:\1_archiv\".
... bzw, um das etwas übersichtlicher zu gestalten (nur ein Batch nötig):
Bitte darauf achten, dass die Pfade in Zeile 2 und 3 mit "\" enden!
Um die ursprüngliche Funktionalität (Quelle und Ziel sind jeweils der aktuelle Ordner) einfach die Zeilen 2 und 3 weglassen bzw auf
ändern ...
Schließlich noch eine Drag & Drop-Variante mit vorgegebenem Ziel: Zeile 2 auf
ändern - damit wird dann entweder ein übergebener Ordner oder der aktuelle Ordner als Quelle verwendet ...
Grüße
bastla
@Echo off & setlocal
set "Quelle=C:\1\"
set "Ziel=C:\1_archiv\"
for %%a in ("%Quelle%*") do (
if NOT "%%~nxa"=="%~nx0" (
Echo Verarbeite Datei "%%a"
set "fdate=%%~ta"
setlocal enabledelayedexpansion
set "fday=!fdate:~0,2!"
set "fmonth=!fdate:~3,2!"
set "fyear=!fdate:~6,4!"
set "folname=!fyear!_!fmonth!_!fday!"
md "%Ziel%!folname!" 2>nul
Echo Verschiebe Datei "%%a" nach "!folname!"
move "%%a" "%Ziel%!folname!\"
endlocal
)
)
Um die ursprüngliche Funktionalität (Quelle und Ziel sind jeweils der aktuelle Ordner) einfach die Zeilen 2 und 3 weglassen bzw auf
set "Quelle="
set "Ziel="
Schließlich noch eine Drag & Drop-Variante mit vorgegebenem Ziel: Zeile 2 auf
if [%1] neq set "Quelle=%~1\"
Grüße
bastla