Dateien gleich Ordnernamen umbenennen (auch in allen Unterordnern)
Hallo.
Ich möchte in einem speziellen Ordner in ALLEN Unterordnern ALLE Dateien nach ihren Ordnernamen umbenennen.
Ich habe mir schon diese Version von bastla angesehen: Batch - Dateien mit Ordnernamen umbenennen
Dabei habe ich noch 2 Probleme:
1. Ich muss die .bat Datei in dem Ordner ablegen, wo ich auch die Dateien umbenennen möchte. Mein Ziel wäre es aber, die Datei zentral abzulegen. Es müsste also der Pfad zum Ordner mit den Dateien eingefügt werden.
2. Es wird nur auf erster Ordnerebene umbenannt. Ich möchte aber auch alle Unterordner mit einbeziehen.
Danke für eure Hilfe.
Mit freundlichen Grüßen
Ich möchte in einem speziellen Ordner in ALLEN Unterordnern ALLE Dateien nach ihren Ordnernamen umbenennen.
Ich habe mir schon diese Version von bastla angesehen: Batch - Dateien mit Ordnernamen umbenennen
@echo off & setlocal
FOR /F "delims=" %%i in ('dir /B /AD 2^>nul') do (
FOR /F "delims=" %%j in ('dir "%%i" /B /A-D 2^>nul') do call:dorename "%%i" "%%~nj" "%%~xj"
)
goto:eof
:dorename
set "dirname=%~1"
set "filename=%~2"
set "fileext=%~3"
set "endname=%dirname:.= %"
set /a Ind=0
:namecheck
if not exist "%dirname%\%endname%%fileext%" goto :doit
set /a Ind+=1
set "endname=%dirname:.= %(%Ind%)"
goto:namecheck
:doit
ren "%dirname%\%filename%%fileext%" "%endname%%fileext%"
goto:eof
Dabei habe ich noch 2 Probleme:
1. Ich muss die .bat Datei in dem Ordner ablegen, wo ich auch die Dateien umbenennen möchte. Mein Ziel wäre es aber, die Datei zentral abzulegen. Es müsste also der Pfad zum Ordner mit den Dateien eingefügt werden.
2. Es wird nur auf erster Ordnerebene umbenannt. Ich möchte aber auch alle Unterordner mit einbeziehen.
Danke für eure Hilfe.
Mit freundlichen Grüßen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245430
Url: https://administrator.de/forum/dateien-gleich-ordnernamen-umbenennen-auch-in-allen-unterordnern-245430.html
Ausgedruckt am: 12.04.2025 um 19:04 Uhr
14 Kommentare
Neuester Kommentar
Haloo OOmatrixOO!
Das könnte angepasst (und oberflächlich getestet) etwa so aussehen:
Grüße
bastla
P.S.: Wenn Du mehrere Zeilen Code postest, besser nicht
Das könnte angepasst (und oberflächlich getestet) etwa so aussehen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@echo on & setlocal
if [%1]== echo Kein Startordner angegeben! & pause & goto :eof
FOR /d /r "%~1" %%i in (*) do (
pushd "%%i"
FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj"
popd
)
goto:eof
:dorename
set "dirname=%~1"
set "filename=%~2"
set "fileext=%~3"
set "endname=%dirname:.= %"
set /a Ind=0
:namecheck
if not exist "%endname%%fileext%" goto :doit
set /a Ind+=1
set "endname=%dirname:.= %(%Ind%)"
goto:namecheck
:doit
ren "%filename%%fileext%" "%endname%%fileext%"
goto:eof
bastla
P.S.: Wenn Du mehrere Zeilen Code postest, besser nicht
type="plain"
, sondern nur
verwenden ...
Hallo hackyli (eine kurze Begrüßung Deinerseits wäre ja vielleicht auch drin gewesen)!
ein. Achtung: Wenn es im Zielordner (muss übrigens schon existieren) schon gleichnamige Dateien gibt, werden diese kommentarlos überschrieben ...
(Trotzdem) Grüße
bastla
Ich würde gerne nur bestimmte Dateiendungen umbennen (z.B. PDF-Dateien)
Ändere die Zeile 6 aufFOR /F "delims=" %%j in ('dir /B /A-D *.pdf 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj"
und danach die umbenannten PDF Dateien in einen anderen Ordner verschieben.
Baue zwischen Zeile 6 und 7 etwas in der Artmove *.pdf "D:\Dein Ziel-Ordner\"
(Trotzdem) Grüße
bastla
Hallo OOmatrixOO!
Ungetestet etwa so:
Falls auch Unterordner von "D:\Movies\unbearbeitet" ausgeschlossen werden sollen:
Grüße
bastla
Ungetestet etwa so:
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log
@echo on & setlocal
FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" (
if /i "%%~fi" neq "D:\Movies\unbearbeitet" (
pushd "%%i"
FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj"
popd
)
)
goto:eof
REM Rest wie gehabt
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log
@echo on & setlocal
FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" (
echo "%%~fi"|findstr /ivb "D:\Movies\unbearbeitet">nul && (
pushd "%%i"
FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj"
popd
)
)
goto:eof
REM Rest wie gehabt
Grüße
bastla