Per Batch Datei, Teile von Dateinamen ändern oder hinzufügen
Hallo und guten Morgen zusammen,
ich habe folgendes Problem, welches zu lösen gilt und ich hoffe, ihr könnt mir helfen.
Ich habe einen Hauptordner mit mehreren Unterordnern, in denen sich Dateien mit verschiedenen Formaten befinden.
Die Dateinamen sind verschieden und auch unterschiedlich lang.
Vor jedem Dateinamen muss das aktuelle Datum ergänzt werden.
Bsp:
Bild01.jpg muss nachher 121115 Bild01.jpg heißen usw.
Habt ihr mir da eine Batchlösung die das umsetzen kann?
Am besten eine die ich nicht in jeden Unterordner ausführen muss, da es sehr viele sind.
Sie soll auch nur die Dateien in den Unterordnern umbenennen und nicht alles.
Also
PFAD01/Unterordner 1-X
Die batch soll nun hier liegen:
PFAD01/Umbennen.bat
Und bennenen soll sie nur die Unterordner 1-X
Ich hoffe ich habe mich verständlich ausgedrückt und bedanke mich schonmal für eure Bemühungen.
Viele Grüße
sL0w2k5
ich habe folgendes Problem, welches zu lösen gilt und ich hoffe, ihr könnt mir helfen.
Ich habe einen Hauptordner mit mehreren Unterordnern, in denen sich Dateien mit verschiedenen Formaten befinden.
Die Dateinamen sind verschieden und auch unterschiedlich lang.
Vor jedem Dateinamen muss das aktuelle Datum ergänzt werden.
Bsp:
Bild01.jpg muss nachher 121115 Bild01.jpg heißen usw.
Habt ihr mir da eine Batchlösung die das umsetzen kann?
Am besten eine die ich nicht in jeden Unterordner ausführen muss, da es sehr viele sind.
Sie soll auch nur die Dateien in den Unterordnern umbenennen und nicht alles.
Also
PFAD01/Unterordner 1-X
Die batch soll nun hier liegen:
PFAD01/Umbennen.bat
Und bennenen soll sie nur die Unterordner 1-X
Ich hoffe ich habe mich verständlich ausgedrückt und bedanke mich schonmal für eure Bemühungen.
Viele Grüße
sL0w2k5
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 15.11.2012 um 11:41:56 Uhr
Ja, leider.
Set /a rgc+=1
#851
set /a rgc+=1
#852
[Edit Nachtrag]
Zitat von @sL0w2k5:
#853
[/Edit Nachtrag]
Set /a rgc+=1
#854
[/Edit Nachtrag2 & Thx@bastla]
Set /a rgc+=1
#851
set /a rgc+=1
#852
[Edit Nachtrag]
----
Die batch soll nun hier liegen:
PFAD01/Umbennen.bat
Set /a rgc+=1Die batch soll nun hier liegen:
PFAD01/Umbennen.bat
#853
[/Edit Nachtrag]
Und bennenen soll sie nur die Unterordner 1-X
[Edit Nachtrag2]Set /a rgc+=1
#854
[/Edit Nachtrag2 & Thx@bastla]
Content-ID: 194266
Url: https://administrator.de/forum/per-batch-datei-teile-von-dateinamen-aendern-oder-hinzufuegen-194266.html
Ausgedruckt am: 14.04.2025 um 18:04 Uhr
16 Kommentare
Neuester Kommentar
Hallo,
ich schreibe dir jetzt mal ein paar Ansatzpunkte auf:
-Die Variable %date% enthält das aktuelle Datum.
-Zum Umbenennen benutzt du am besten move oder ren
-Zum durchlaufen nimmst du ne For Schleife die rekursiv in die Ordner geht.
Das Könnte ungefähr so aussehen (UNGETESTET!)
Gruß
@Biber Danke ist korrigiert!
ich schreibe dir jetzt mal ein paar Ansatzpunkte auf:
-Die Variable %date% enthält das aktuelle Datum.
-Zum Umbenennen benutzt du am besten move oder ren
-Zum durchlaufen nimmst du ne For Schleife die rekursiv in die Ordner geht.
Das Könnte ungefähr so aussehen (UNGETESTET!)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
@echo off && setlocal
dir /b /s *.jpg > temp.txt
call :LaufeOrdnerDurch
goto :eof
:LaufeOrdnerDurch
for %%f in (temp.txt) do set "SourcName=%%~nf" & call :Verschiebe "%%f"
goto :eof
:Verschiebe
ren %1 "%SourcName:~,15%%~x1"
goto :eof
Gruß
@Biber Danke ist korrigiert!
@ Hitman4021
Besonders elegant ist die Variante mit Temp-Datei ja eigentlich nicht - und schon gar nicht, wenn Du die dann mit "
Das "
Grüße
bastla
Besonders elegant ist die Variante mit Temp-Datei ja eigentlich nicht - und schon gar nicht, wenn Du die dann mit "
for
" ohne "/f
" auslesen willst - daher vielleicht besser doch so:1
2
3
2
3
@echo off & setlocal
set "Datum=%date:~-2%%date:~-7,2%%date:~-10,2%"
for /f "delims=" %%i in ('dir /s /b *.jpg') do echo ren "%%i" "%Datum% %%~nxi"
echo
" vor dem "ren
" dient übrigens dem gefahrlosen Testen, da so die Umbenenn-Befehle nur angezeigt werden ...Grüße
bastla
Hallo sL0w2k5 und willkommen im Forum!
Lässt sich "Und bennenen soll sie nur die Unterordner 1-X" noch etwas präzisieren (zB im Hinblick auf die Frage, ob tatsächlich nur Dateien aus den Unterordnern, aber nicht jene aus dem Ordner "PFAD01", verarbeitet werden sollen, oder, ob sämtliche oder doch nur die jpg-Dateien umbenannt werden sollen)?
Grüße
bastla
Lässt sich "Und bennenen soll sie nur die Unterordner 1-X" noch etwas präzisieren (zB im Hinblick auf die Frage, ob tatsächlich nur Dateien aus den Unterordnern, aber nicht jene aus dem Ordner "PFAD01", verarbeitet werden sollen, oder, ob sämtliche oder doch nur die jpg-Dateien umbenannt werden sollen)?
Grüße
bastla
Zitat von @bastla:
@ andimue
Wenn du schon nicht "
Pfade gelegentlich Leer- oder Sonderzeichen enthalten, solltest Du auch berücksichtigen) ...
Grüße
bastla
@ andimue
Wenn du schon nicht "
pushd
" verwendest, dann doch bitte wenigstens "cd /d
" (und dass Dateinamen /Pfade gelegentlich Leer- oder Sonderzeichen enthalten, solltest Du auch berücksichtigen) ...
Grüße
bastla
@ bastla
du hast natürlich Recht - wie immer
Aber manche Dinge sind so drin, die mach ich einfach automatisch (wobei zumindest aber ein cd in ein Verzeichnis mit Blank im Namen auch ohne Hochkommata funktioniert, deshalb hab ich mir wohl das " nicht angewöhnt)
Aber ich bin echt immer dankbar für nen Tipp
Gruß Andi
Hallo sL0w2k5!
Wenn der Vorgang auf Unterordner beschränkt sein muss, brauchst Du zunächst eine Schleife für diese Ordner:
Hinsichtlich der Anzahl der umbenannten Dateien ist nicht klar, worauf sie sich bezieht - soll sie neben "Ordner1" auch für "Ordner1\Unterordner1" ausgegeben werden, oder nur alle Dateien unterhalb von "Ordner1" zusammenfassen? Falls letztere Variante gewünscht wäre, etwa so:
Natürlich wäre noch anzumerken, dass nur am selben Tag erkennbar ist, dass das Datum dem Dateinamen bereits hinzugefügt wurde (wird in Variante 2 kontrolliert) - wenn der Batch morgen oder in 2 Wochen wieder auf die selben Dateien "losgelassen" wird, würde natürlich jeweils das dann aktuelle Tagesdatum nochmals hinzugefügt. Abhilfe könnte hier ein Trennzeichen nach dem Datum (zB "_") schaffen:
- bei dieser einfachen Variante würden allerdings auch alle Ordner, deren Name mit 6 Ziffern und "_" beginnt, ignoriert werden ...
Grüße
bastla
Wenn der Vorgang auf Unterordner beschränkt sein muss, brauchst Du zunächst eine Schleife für diese Ordner:
1
2
3
4
5
2
3
4
5
@echo off & setlocal
set "Datum=%date:~-2%%date:~-7,2%%date:~-10,2%"
for /d %%o in (D:\PFAD1\*) do (
for /f "delims=" %%i in ('dir /s /b /a-d "%%o"') do echo ren "%%i" "%Datum% %%~nxi"
)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
@echo off & setlocal
set "Datum=%date:~-2%%date:~-7,2%%date:~-10,2%"
for /d %%o in (D:\PFAD1\*) do call :ProcessDir "%%o"
goto :eof
:ProcessDir
set /a Anzahl=0
for /f "delims=" %%i in ('dir /s /b /a-d %1^|findstr /bvc:"%Datum% "') do (
echo ren "%%i" "%Datum% %%~nxi"
set /a Anzahl+=1
)
echo %Anzahl% Dateien in %1
goto :eof
for /f "delims=" %%i in ('dir /s /b /a-d %1^|findstr /v "\\[0-9][0-9][0-9][0-9][0-9][0-9]_"') do (
Grüße
bastla
Hallo Bastla,
ich fand nach Suchen und Ausprobieren bisher keine Lösung für meine Problem.
Ich habe einen Dateiordner. In dem sind pdf-Dateinen enthalten.
Bei allen diesen pdf-Dateien müssen die Dateinamen geändert werden. Bspw. von so:
3455244_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458739_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458730_20230518_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464561_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464563_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3487686_20230519_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
auf dieses Ziel (Bsp. letzte Zeile hier)
Ziel: 3487686_20230519_0700-zp.pdf
Probierte mit set rum und erzeugte eine batch-Datei. Brachte kein Ergebnis zustande.
Hoffe Du kannst helfen.
Danke im voraus.
FG Jan
ich fand nach Suchen und Ausprobieren bisher keine Lösung für meine Problem.
Ich habe einen Dateiordner. In dem sind pdf-Dateinen enthalten.
Bei allen diesen pdf-Dateien müssen die Dateinamen geändert werden. Bspw. von so:
3455244_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458739_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458730_20230518_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464561_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464563_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3487686_20230519_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
auf dieses Ziel (Bsp. letzte Zeile hier)
Ziel: 3487686_20230519_0700-zp.pdf
Probierte mit set rum und erzeugte eine batch-Datei. Brachte kein Ergebnis zustande.
Hoffe Du kannst helfen.
Danke im voraus.
FG Jan

Zitat von @Jang09126:
Hallo Bastla,
ich fand nach Suchen und Ausprobieren bisher keine Lösung für meine Problem.
Ich habe einen Dateiordner. In dem sind pdf-Dateinen enthalten.
Bei allen diesen pdf-Dateien müssen die Dateinamen geändert werden. Bspw. von so:
3455244_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458739_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458730_20230518_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464561_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464563_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3487686_20230519_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
auf dieses Ziel (Bsp. letzte Zeile hier)
Ziel: 3487686_20230519_0700-zp.pdf
Probierte mit set rum und erzeugte eine batch-Datei. Brachte kein Ergebnis zustande.
Hoffe Du kannst helfen.
Danke im voraus.
FG Jan
Hallo Bastla,
ich fand nach Suchen und Ausprobieren bisher keine Lösung für meine Problem.
Ich habe einen Dateiordner. In dem sind pdf-Dateinen enthalten.
Bei allen diesen pdf-Dateien müssen die Dateinamen geändert werden. Bspw. von so:
3455244_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458739_20230520_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3458730_20230518_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464561_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3464563_20230521_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
3487686_20230519_000000000000700-zp_101_0000000000000000000000000_ft.pdf.pdf
auf dieses Ziel (Bsp. letzte Zeile hier)
Ziel: 3487686_20230519_0700-zp.pdf
Probierte mit set rum und erzeugte eine batch-Datei. Brachte kein Ergebnis zustande.
Hoffe Du kannst helfen.
Danke im voraus.
FG Jan
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
@echo off &setlocal enabledelayedexpansion
set "ordner=d:\daten"
for %%a in ("%ordner%\*.pdf") do (
for /f "tokens=1-4 delims=_-" %%b in ("%%~na") do (
set num=%%d
set num=!num:~-4!
ren "%%a" "%%b_%%c_!num!-%%e%%~xa"
)
)
1
Get-ChildItem 'd:\ordner' -file -Filter *.pdf | rename-item -NewName {$_.Name -replace '^(\d+_\d+)_.*?(\d{4}-[^_]+).*','$1_$2.pdf'} -verbose
Gruß

Wenn mans nicht programmatisch verwursten muss, klar, Klicki-Bunti für den Alltag geht immer. Dann darf der angestaubte Thread jetzt beruhigt wieder in seine Leichenstarre fallen
.