Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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
GELÖST

Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben

Frage Entwicklung Batch & Shell

Mitglied: Traveller

Traveller (Level 1) - Jetzt verbinden

03.12.2009, aktualisiert 18:12 Uhr, 11226 Aufrufe, 11 Kommentare, 1 Danke

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!
Mitglied: Snowman25
03.12.2009 um 12:26 Uhr
01.
@Echo off 
02.
set file=%1 
03.
set fdate=%~t1 
04.
set fday=%fdate:~0,2% 
05.
set fmonth=%fdate:~3,2% 
06.
set fyear=%fdate:~6,4% 
07.
set folname=%fyear%_%fmonth%_%fday% 
08.
:work 
09.
if exist %folname%\NUL ( 
10.
	Echo Verschiebe Datei %file% nach %folname% 
11.
	move %file% "%folname%\"%file% 
12.
) else ( 
13.
	Echo Erstelle Verzeichnis %folname% 
14.
	md "%folname%" 
15.
	goto work 
16.
)
Aus dem ordner ausführen, in dem die Bilder liegen
verschiebt eine Datei in einen ordner der nach dem letzten Änderungszeitpunkt benannt ist
Bitte warten ..
Mitglied: Traveller
03.12.2009 um 12:51 Uhr
Vielen Dank für den ersten Lösungsansatz.

Aber es klappt nicht.
Ich ahbe eine Datei namens kopieren.bat erstellt und in den Ordner mit den betreffenden Bildern kopiert.
Inhalt der kopieren.bat ist dieser Code:
@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
)

Führe ich nun die Batch datei aus, dann geht sie endlos und ich kann nur mit strg+c abbrechen.
Dann lese ich im DOS-Fenster.
Erstelle Verzeichnis ~6,4_~3,2_~0,2
A subdirectory or file ~6,4_~3,2_~0,2 already exists.
Verschiebe Datei nach ~6,4_~3,2_~0,2
The system cannot find this file specified

Und dann rennt es wieder von neuem los, immer in dieser Folge.

Das Verzeichnis
~6,4_~3,2_~0,2
wurde erstellt. In diesem befindet sich aber keine Datei.

Gut, vielleicht ist das noch nicht der richtige Ansatz?
Bitte warten ..
Mitglied: Snowman25
03.12.2009 um 12:58 Uhr
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
Bitte warten ..
Mitglied: Traveller
03.12.2009 um 13:04 Uhr
klar warte ich gerne!

Es ist ja so, dass ich die Bilder von der Flashkarte auf den Blechtrottel kopiere und dann sollen sie eben in die Struktur gebracht werden.
Wenn es dann geklappt hat, kann ich sie ja löschen.

Danke für deine tolle Hilfe!
Bitte warten ..
Mitglied: Snowman25
03.12.2009 um 13:23 Uhr
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:
01.
@Echo off 
02.
for %%a in (*) do ( 
03.
	if NOT "%%a"=="builder.bat" ( 
04.
		if NOT "%%a"=="worker.bat" ( 
05.
			Echo. 
06.
			Echo Verarbeite Datei %%a 
07.
			Echo. 
08.
			Echo ________________________________ 
09.
			Echo. 
10.
			call worker.bat "%%a" 
11.
12.
13.
)
worker.bat:
01.
@Echo off 
02.
set file=%1 
03.
set fdate=%~t1 
04.
set fday=%fdate:~0,2% 
05.
set fmonth=%fdate:~3,2% 
06.
set fyear=%fdate:~6,4% 
07.
set folname=%fyear%_%fmonth%_%fday% 
08.
:work 
09.
if exist %folname%\NUL ( 
10.
	Echo Verschiebe Datei %file% nach %folname% 
11.
	Echo ---- 
12.
	move %file% "%folname%\"%file%  
13.
) else ( 
14.
	Echo Erstelle Verzeichnis %folname% 
15.
	Echo ---- 
16.
	md "%folname%" 
17.
	goto work 
18.
)
Updated Version, kopiert sich nicht selbst
Bitte warten ..
Mitglied: Traveller
03.12.2009 um 13:39 Uhr
Wow!

Cooles Teil!!!

Über 500 Bilder sind eben in ein paaur Sekunden richtig einsortiert worden!
Klasse!!!

Vielen Dank und noch eine schöne Adventszeit!
Bitte warten ..
Mitglied: Snowman25
03.12.2009 um 14:00 Uhr
Kein Problem, danke und dir auch
Heb dir die Dateien auf, willst ja wahrscheinlich öfter bilder sortieren
Bitte warten ..
Mitglied: Traveller
29.04.2012 um 19:50 Uhr
Übrigens:
ich nutze diese beiden Teile immer noch.

Also nochmals vielen Dank!!
Bitte warten ..
Mitglied: 107785
31.07.2012 um 23:01 Uhr
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:
01.
> @Echo off 
02.
> for %%a in (*) do ( 
03.
> 	if NOT "%%a"=="builder.bat" ( 
04.
> 		if NOT "%%a"=="worker.bat" ( 
05.
> 			Echo. 
06.
> 			Echo Verarbeite Datei %%a 
07.
> 			Echo. 
08.
> 			Echo ________________________________ 
09.
> 			Echo. 
10.
> 			call worker.bat "%%a" 
11.
> 		) 
12.
> 	) 
13.
> ) 
14.
> 
worker.bat:
01.
@Echo off 
02.
> set file=%1 
03.
> set fdate=%~t1 
04.
> set fday=%fdate:~0,2% 
05.
> set fmonth=%fdate:~3,2% 
06.
> set fyear=%fdate:~6,4% 
07.
> set folname=%fyear%_%fmonth%_%fday% 
08.
> :work 
09.
> if exist %folname%\NUL ( 
10.
> 	Echo Verschiebe Datei %file% nach %folname% 
11.
> 	Echo ---- 
12.
> 	move %file% "%folname%\"%file%  
13.
> ) else ( 
14.
> 	Echo Erstelle Verzeichnis %folname% 
15.
> 	Echo ---- 
16.
> 	md "%folname%" 
17.
> 	goto work 
18.
> )
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\".
Bitte warten ..
Mitglied: bastla
01.08.2012 um 00:43 Uhr
Hallo c0by1985 und willkommen im Forum!

Du kannst den Pfad einfach jedem "%folname%" (also in den Zeilen 12 und 16 der "worker.bat") voranstellen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
01.08.2012, aktualisiert um 11:08 Uhr
... bzw, um das etwas übersichtlicher zu gestalten (nur ein Batch nötig):
01.
@Echo off & setlocal 
02.
set "Quelle=C:\1\" 
03.
set "Ziel=C:\1_archiv\" 
04.
 
05.
for %%a in ("%Quelle%*") do ( 
06.
    if NOT "%%~nxa"=="%~nx0" ( 
07.
        Echo Verarbeite Datei "%%a" 
08.
        set "fdate=%%~ta" 
09.
        setlocal enabledelayedexpansion 
10.
        set "fday=!fdate:~0,2!" 
11.
        set "fmonth=!fdate:~3,2!" 
12.
        set "fyear=!fdate:~6,4!" 
13.
        set "folname=!fyear!_!fmonth!_!fday!" 
14.
        md "%Ziel%!folname!" 2>nul 
15.
        Echo Verschiebe Datei "%%a" nach "!folname!" 
16.
        move "%%a" "%Ziel%!folname!\" 
17.
        endlocal 
18.
19.
)
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
01.
set "Quelle=" 
02.
set "Ziel="
ändern ...

Schließlich noch eine Drag & Drop-Variante mit vorgegebenem Ziel: Zeile 2 auf
if [%1] neq [] set "Quelle=%~1\"
ändern - damit wird dann entweder ein übergebener Ordner oder der aktuelle Ordner als Quelle verwendet ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(1)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Batch & Shell
gelöst Variable aus ini Datei auslesen und weiterverwenden (17)

Frage von n0cturne zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...