l-ne0n
Goto Top

Batch PDFs anhand des Namens in Unterordner sortieren

Hey, war sonst immer stiller Mitleser, aber komme jetzt grad auch mit den vorhandenen Themen nicht weiter...

Aufgabe:

In "C:\User" befinden sich .pdf-Dateien.
Der Name der Dateien sieht immer folgendermaßen aus: 20151108160307.pdf -> Also YYYYMMDDhhmmss (Year, Month, Day, hour, minute, second)
Interessant für uns ist nur der Anfang, also im Beispiel "201511", das wäre November 2011.

Nun gibt es den Pfad "C:\User\Archiv", mit den Unterordnern "2014", "2015" und "2016".
Die wiederum haben Unterordner von "01" (Januar) bis "12" (Dezember).
Die pdfs sollen da korrekt einsortiert werden.

Mein bisheriger Versuch aus teilweise zusammengeklauten Code-Schnipseln sieht so aus:

@echo on & setlocal

set "Quelle=C:\User"  
set "Typ=pdf"  
set "Ziel=C:\User\Archiv"  

for %%i in ("%Quelle%\*.%Typ%") do (  
	for /f "tokens=1-6 delims=2" %%a in ("%%~ni") do (  
		set "Jahr=%%a"  
		set "Tag=%%b"  
	)


set "ZielOrdner"=%Ziel%\  


Das ist natürlich irgendwie völliger Bullshit und da fehlt noch jede Menge, aber irgendwie find ich keinen Ansatz, bin noch Anfänger ^^

Danke schonmal für die Hilfe face-smile

Content-ID: 285103

Url: https://administrator.de/contentid/285103

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

122990
Lösung 122990 09.10.2015, aktualisiert am 19.10.2015 um 15:13:14 Uhr
Goto Top
Ebenfalls schon da gewesen:
Batch: Dateien automatisch in verschiedene Ordner sortieren

Gruß grexit
l-Ne0n
l-Ne0n 09.10.2015 aktualisiert um 12:15:50 Uhr
Goto Top
Oh, das hatte ich echt nicht gefunden, dann schau ich mal, ob ich das verwenden kann face-smile

Danke.


:Edit:

Hab das jetzt auf mein Beispiel so abgeändert:

@echo on & setlocal EnableDelayedExpansion

set "Quelle=C:\User"  
set "Ziel=C:\User\Archiv"  

for %%a in ("%quelle%\*.pdf") do @(  
	set "name=%%~na"  
	
	for /f "tokens=3 delims=." %%b in ("!name!") do (  
		set "datestring=%%b"  
		set year=!datestring:0,4!
		set month=!datestring:~4,2!
		set "target=%ziel%\!year!\!month!"  
		
		if not exist "!target!" md "!target!"  
		move "%%a" "!target!\"  
	)
)


Funktionieren will das ganze allerdings nicht, irgendwo hakt es noch...
l-Ne0n
l-Ne0n 09.10.2015 aktualisiert um 12:15:08 Uhr
Goto Top
Okay, hab es jetzt "gelöst" aka funktionierend auf meine Bedürfnisse angepasst.
Falls nochmal wer hier drüber stolpert, weil gleiches Problem:

@echo off & setlocal EnableDelayedExpansion

set "Quelle=C:\User"  
set "Ziel=C:\User\Archiv"  

for %%a in ("%quelle%\*.pdf") do (  
	set "name=%%~na"  
	
	for /f "tokens=1 delims=" %%b in ("!name!") do @(  
		set "datestring=%%b"  
		set year=!datestring:~0,4!
		set month=!datestring:~4,2!
		set "target=%ziel%\!year!\!month!"  
		
		if not exist "!target!" md "!target!"  
		move "%%a" "!target!\"  
	)
)

(Der Fehler lag bei mir
[...] for /f "tokens=3 delims=."[...]  
. Es musste bei mir "tokens=1" und "delims=" heißen, bedingt durch den Dateinamen.)
122990
122990 10.10.2015 um 11:23:10 Uhr
Goto Top
Na dann, fehlt nur noch ein gelöst
l-Ne0n
l-Ne0n 19.10.2015 um 15:13:01 Uhr
Goto Top
Sorry, nich gesehen, dass es das gibt :D