Filtern und verschieben von falsch benannten Ordnern und Dateien
Hallo!
Ich habe eine Ordnersturktur mit sehr vielen Ordnern.
Jeder Ordner hat eine 5- bzw. 6-stellige Nummer - nur manche haben sich mit falschen Bezeichnungen "dazugeschummelt", zB "123456 Auto" (also Nummer und Name) oder nur Name etc
Nun sollen alle Ordner samt Unterordnern, die eine falsche Bezeichnung (keine 5- oder 6-stellige Nummer) haben, in einen anderen Ordner (Ordnername "Umbenennen") verschoben werden.
Zusätzlich
In diesen Ordnern sind Dateien, die eine 5- bzw. 6-stellige Nummer ergänzt um ein Kürzel in Form von "_xy##" haben (z.B. 123456_w01.jpg).
Auch hier gibt es Dateien mit falschen Bezeichnungen die ebenfalls in den Ordner "Umbenennen" verschoben werden sollen.
Vielen Dank für eure Rückmeldungen im Voraus!
Ich habe eine Ordnersturktur mit sehr vielen Ordnern.
Jeder Ordner hat eine 5- bzw. 6-stellige Nummer - nur manche haben sich mit falschen Bezeichnungen "dazugeschummelt", zB "123456 Auto" (also Nummer und Name) oder nur Name etc
Nun sollen alle Ordner samt Unterordnern, die eine falsche Bezeichnung (keine 5- oder 6-stellige Nummer) haben, in einen anderen Ordner (Ordnername "Umbenennen") verschoben werden.
Zusätzlich
In diesen Ordnern sind Dateien, die eine 5- bzw. 6-stellige Nummer ergänzt um ein Kürzel in Form von "_xy##" haben (z.B. 123456_w01.jpg).
Auch hier gibt es Dateien mit falschen Bezeichnungen die ebenfalls in den Ordner "Umbenennen" verschoben werden sollen.
Vielen Dank für eure Rückmeldungen im Voraus!
Please also mark the comments that contributed to the solution of the article
Content-Key: 202944
Url: https://administrator.de/contentid/202944
Printed on: April 19, 2024 at 22:04 o'clock
2 Comments
Latest comment
Hallo sasi2803 und willkommen im Forum!
Das könnte etwa so gehen:
Der Batch ist "scharf geschaltet" und wird daher Ordner/Dateien löschen (aber hoffentlich vorher noch kopieren ), daher bitte nur auf Testdaten loslassen!
Grüße
bastla
Das könnte etwa so gehen:
@echo off & setlocal
set "Quelle=D:\Basis"
set "Ziel=D:\Umbenennen"
::Ordner
for /f "delims=" %%i in ('dir /s/b/ad "%Quelle%"^|sort /r') do echo %%~ni|findstr /xv "[0-9][0-9][0-9][0-9][0-9][0-9]"|findstr /xv "[0-9][0-9][0-9][0-9][0-9]">nul && call :ProcessDir "%%i"
::Dateien
for /f "delims=" %%i in ('dir /s/b/a-d "%Quelle%"^|sort /r') do echo %%~ni|findstr /xv "[0-9][0-9][0-9][0-9][0-9][0-9]_..[0-9][0-9]"|findstr /xv "[0-9][0-9][0-9][0-9][0-9]_..[0-9][0-9]">nul && call :ProcessFile "%%i"
goto :eof
:ProcessDir
set "Pfad=%~1"
call set "RelPfad=%%Pfad:%Quelle%\=%%"
echo Verschiebe %1
xcopy /e %1 "%Ziel%\%RelPfad%\">nul
rd /s /q %1
goto :eof
:ProcessFile
set "Pfad=%~dp1"
call set "RelPfad=%%Pfad:%Quelle%\=%%"
echo Verschiebe %1
xcopy %1 "%Ziel%\%RelPfad%">nul
del %1
goto :eof
Grüße
bastla