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-Key: 285103

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

Printed on: April 24, 2024 at 02:04 o'clock

Mitglied: 122990
Solution 122990 Oct 09, 2015, updated at Oct 19, 2015 at 13:13:14 (UTC)
Goto Top
Ebenfalls schon da gewesen:
Batch: Dateien automatisch in verschiedene Ordner sortieren

Gruß grexit
Member: l-Ne0n
l-Ne0n Oct 09, 2015 updated at 10:15:50 (UTC)
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...
Member: l-Ne0n
l-Ne0n Oct 09, 2015 updated at 10:15:08 (UTC)
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.)
Mitglied: 122990
122990 Oct 10, 2015 at 09:23:10 (UTC)
Goto Top
Na dann, fehlt nur noch ein gelöst
Member: l-Ne0n
l-Ne0n Oct 19, 2015 at 13:13:01 (UTC)
Goto Top
Sorry, nich gesehen, dass es das gibt :D