Batch Ordner aus Dateinamen (erste 8 Zeichen) erstellen und Dateien verschieben
Hallo
Ich muss eine Ordnerstruktur anpassen und Dateien verschieben.
Aktuell habe ich viele Ordner, in denen jeweils ca. 100 Dateien sind. Die Dateien haben beispielsweise folgende Namen und Endungen:
XYZ12345_abe.jpg
XYZ12345_1dfdf.pdf
XYZ12345-zy.xls
XYZ55555.doc
XYZ55555_abe.ppt
abcde_1.xls
abcde.doc
Nun sollen in allen Ordnern jeweils für die Dateien mit den Dateinamen XYZ* Unterordner erstellt werden, und die entsprechenden Dateien dahin verschoben werden. Die Ordnernamen sollen dabei nur die ersten 8 Zeichen der Dateinamen sein. Das Ergebnis sollte dann folgendermassen aussehen:
XYZ12345\XYZ12345_abe.jpg
XYZ12345\XYZ12345_1dfdf.pdf
XYZ12345\XYZ12345-zy.xls
XYZ55555\XYZ55555.doc
XYZ55555\XYZ55555_abe.ppt
abcde_1.xls
abcde.doc
Die Dateien, welche nicht mit XYZ beginnen, sollen nicht verschoben werden.
In folgenden Threads habe ich bereits einige Infos gefunden:
Batch Ordner aus Dateinamen erstellen und Dateien verschieben (Sonderzeichen)
Batch Ordner mit Dateinamen erstellen und verschieben
Da ich mich jedoch mit den Textfunktionen nicht auskenne, komme ich nicht mehr weiter.
Wäre super, wenn mir da jemand helfen könnte!
Gruss
Stefan
Ich muss eine Ordnerstruktur anpassen und Dateien verschieben.
Aktuell habe ich viele Ordner, in denen jeweils ca. 100 Dateien sind. Die Dateien haben beispielsweise folgende Namen und Endungen:
XYZ12345_abe.jpg
XYZ12345_1dfdf.pdf
XYZ12345-zy.xls
XYZ55555.doc
XYZ55555_abe.ppt
abcde_1.xls
abcde.doc
Nun sollen in allen Ordnern jeweils für die Dateien mit den Dateinamen XYZ* Unterordner erstellt werden, und die entsprechenden Dateien dahin verschoben werden. Die Ordnernamen sollen dabei nur die ersten 8 Zeichen der Dateinamen sein. Das Ergebnis sollte dann folgendermassen aussehen:
XYZ12345\XYZ12345_abe.jpg
XYZ12345\XYZ12345_1dfdf.pdf
XYZ12345\XYZ12345-zy.xls
XYZ55555\XYZ55555.doc
XYZ55555\XYZ55555_abe.ppt
abcde_1.xls
abcde.doc
Die Dateien, welche nicht mit XYZ beginnen, sollen nicht verschoben werden.
In folgenden Threads habe ich bereits einige Infos gefunden:
Batch Ordner aus Dateinamen erstellen und Dateien verschieben (Sonderzeichen)
Batch Ordner mit Dateinamen erstellen und verschieben
Da ich mich jedoch mit den Textfunktionen nicht auskenne, komme ich nicht mehr weiter.
Wäre super, wenn mir da jemand helfen könnte!
Gruss
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196630
Url: https://administrator.de/forum/batch-ordner-aus-dateinamen-erste-8-zeichen-erstellen-und-dateien-verschieben-196630.html
Ausgedruckt am: 15.06.2025 um 09:06 Uhr
4 Kommentare
Neuester Kommentar
Suchstring in Zeile 3 anpassen und Script in den Ordner mit den Dateien reinschmeissen 
Grüße Uwe
@echo off
setlocal ENABLEDELAYEDEXPANSION
set suchstring=XYZ*
for /f "tokens=1 delims=" %%i IN ('dir %suchstring% /A-D /b') DO @(
set filename=%%i
set SHORT=!filename:~0,8!
if not exist "!SHORT!" (md "!SHORT!")
move "%%i" .\!SHORT!
)
Grüße Uwe
Also wenn ich dich richtig verstanden habe dann soll z.b. die Datei XYZ12345_test.jpg im Unterordner hans\peter\ in den Ordner hans\peter\XYZ12345\XYZ12345_test.jpg verschoben werden - oder möchtest du alle neu erzeugten Ordner mit den 8 Buchstaben in einem gemeinsamen Ordner sammeln ?
Also für die erste angesprochene Variante geht folgender Code:
Du musst noch in Zeile 3 und 4 Suchstring und Startordner (Der Ordner in dem sich die Unterordner befinden) angeben.
Hoffe das bringt dich weiter ...
Uwe
Also für die erste angesprochene Variante geht folgender Code:
Du musst noch in Zeile 3 und 4 Suchstring und Startordner (Der Ordner in dem sich die Unterordner befinden) angeben.
@echo off
setlocal ENABLEDELAYEDEXPANSION
set SUCHSTRING=XYZ*
set STARTFOLDER=C:\DeinStartOrdnerOhneAnführungszeichen
cd "%STARTFOLDER%"
for /f "tokens=1 delims=" %%F IN ('dir /b /s /AD') DO @(
cd "%%F"
call :STARTLOOP "%%F"
)
goto :end
:STARTLOOP
cd %1
for /f "tokens=1 delims=" %%i IN ('dir %SUCHSTRING% /A-D /b') DO @(
set filename=%%i
set SHORT=!filename:~0,8!
if not exist "!SHORT!" (md "!SHORT!")
move "%%i" ".\!SHORT!"
)
goto :eof
:end
exit
Hoffe das bringt dich weiter ...
Uwe