Dateinamen per Batch ändern
Hallo,
ich bin Netzwerker und habe mit Programmierung nicht viel zu tun. Daher ist die Frage vermutlich auch total simpel, aber ich krieg's mit lesen der Beiträge nicht hin! Also, deshalb hier die Problematik:
Ich habe in einem Ordner hunderte Dateien, die folgende Namenskonvention haben:
001-diversenamen.pdf
Ich möchte jetzt in die Mitte des Dateinamens noch etwas einbauen, so daß die Files nachher wie folgt heißen:
001-200901-diversenamen.pdf
Ich weiß, dass es jede Menge Tools gibt, die das problemlos können, aber ich muss das immer wieder machen und das auch noch in verschiedenen Ordnern mit verschiedenen Konventionen, so dass Tools einfach zu aufwändig sind.
Vielen Dank für Eure Hilfe!
HoBo
ich bin Netzwerker und habe mit Programmierung nicht viel zu tun. Daher ist die Frage vermutlich auch total simpel, aber ich krieg's mit lesen der Beiträge nicht hin! Also, deshalb hier die Problematik:
Ich habe in einem Ordner hunderte Dateien, die folgende Namenskonvention haben:
001-diversenamen.pdf
Ich möchte jetzt in die Mitte des Dateinamens noch etwas einbauen, so daß die Files nachher wie folgt heißen:
001-200901-diversenamen.pdf
Ich weiß, dass es jede Menge Tools gibt, die das problemlos können, aber ich muss das immer wieder machen und das auch noch in verschiedenen Ordnern mit verschiedenen Konventionen, so dass Tools einfach zu aufwändig sind.
Vielen Dank für Eure Hilfe!
HoBo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106484
Url: https://administrator.de/forum/dateinamen-per-batch-aendern-106484.html
Ausgedruckt am: 28.04.2025 um 09:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo hboltz und willkommen im Forum!
Sollte sich von der Kommandozeile so machen lassen:
Das "@echo" dient dazu, die Umbenennungen zuerst nur anzeigen zu lassen - wenn alles OK aussieht, die gleiche Zeile ohne "@echo" verwenden, um tatsächlich die Namen zu ändern.
Falls Du das in einen Batch verwandeln willst, jeweils %%i und %%j anstatt %i und %j verwenden.
Grüße
bastla
Sollte sich von der Kommandozeile so machen lassen:
for /f "tokens=1* delims=-" %i in ('dir /b "D:\Daten\*-*.pdf"') do @echo ren "D:\Daten\%i-%j" "%i-200901-%j"
Falls Du das in einen Batch verwandeln willst, jeweils %%i und %%j anstatt %i und %j verwenden.
Grüße
bastla

Servus und willkommen,
zu deiner Frage:
Mit anderen Worten:
Gruß
edit... ohne Worte - fast fasta bastla
/edit
zu deiner Frage:
Ich möchte jetzt in die Mitte des Dateinamens noch etwas einbauen, so daß die Files nachher wie folgt heißen:
001-diversenamen.pdf
001-200901-diversenamen.pdf
001-diversenamen.pdf
001-200901-diversenamen.pdf
Mit anderen Worten:
- die "MItte" ist das 4. Zeichen, oder das Zeichen nach dem Bindestrich?
- Der Schnippsel, der eingefügt werden soll, ist ein Datum?
- "Das" Datum von heute?
- "Das" Datum der Datei?
Gruß
edit... ohne Worte - fast fasta bastla

Servus again,
naja meine Fragen haben sich ja durch fasta Bastla schon quasi in Luft aufgelöst
Aber zu deiner Frage zurück, bastla hat es ja schon vorzelebriert:
Aus jedem % machst du %%
naja meine Fragen haben sich ja durch fasta Bastla schon quasi in Luft aufgelöst
Aber zu deiner Frage zurück, bastla hat es ja schon vorzelebriert:
Aus jedem % machst du %%
for /f "tokens=1* delims=-" %%i in ('dir /b "D:\Daten\*-*.pdf"') do @echo ren "D:\Daten\%%i-%%j" "%%i-200901-%%j"
Hallo hboltz!
Wie schon erwähnt - Unterschied eigentlich nur hinsichtlich %%i, %%j:
Wenn Du den Batch in den entsprechenden Ordner legst, dann:
Grüße
bastla
Wie schon erwähnt - Unterschied eigentlich nur hinsichtlich %%i, %%j:
@for /f "tokens=1* delims=-" %%i in ('dir /b "D:\Daten\*-*.pdf"') do @echo ren "D:\Daten\%%i-%%j" "%%i-200901-%%j"
@for /f "tokens=1* delims=-" %%i in ('dir /b *-*.pdf') do @echo ren "%%i-%%j" "%%i-200901-%%j"
bastla
@timobeil
Biber würde Dich jetzt Rechtsüberholer nennen ...
Grüße
bastla
Biber würde Dich jetzt Rechtsüberholer nennen ...
naja meine Fragen haben sich ja durch fasta Bastla schon quasi in Luft aufgelöst 
Ganz im Gegentum; die Fragen waren durchaus gerechtfertigt (und hätte ich heute mehr Zeit, wären sie vermutlich so ähnlich auch von mir gekommen) - ich hatte einfach nur aus der Hüfte geschossen und zufällig getroffen ...Grüße
bastla
Hallo hboltz!
... ansonsten könnte ich die eine Zeile ja kurz zu erklären versuchen:
Zerlege die einzelnen Zeilen der "dir"-Ausgabe (durch "/b" werden ausschließlich die Namen der Dateien, die dem Schema "*-*.pdf" entsprechen, ausgegeben) anhand des Trennzeichens (= "delimiter") "-", wobei nur in den Teil vor dem ersten Trennzeichen ("1") und den gesamten Rest nach dem ersten Trennzeichen ("*") zerlegt werden soll (auch wenn noch weitere "-" enthalten wären, würde dort nicht mehr getrennt werden) und stelle die beiden Teile als %%i und %%j (= nächster Buchstabe im Alphabet
) zur Verfügung.
Dieser Teil wird für jede gefundene Datei durchgeführt.
Für das Umbenennen muss zunächst der alte Dateiname (grundsätzlich mit Pfad, aber hier nicht erforderlich, da der Batch schon im richtigen Ordner ausgeführt wird) angegeben werden. Dieser besteht aus dem Teil vor dem ersten "-", dem "-" und dem Rest dahinter - daher also "%%i-%%j". Die Anführungszeichen sind eigentlich nur erforderlich, wenn ein Pfad / Dateiname Leerzeichen enthält, aber da sie so gut wie nie stören, setze ich sie sicherheitshalber.
Der zweite Parameter des "ren"-Befehles ist der neue Dateiname (immer ohne Pfad). Dieser wird dann einfach aus den nötigen Teilen zusammengesetzt: %%i (Teil vor dem ersten "-" des ursprünglichen Namens), "-200901-" und "%%j" (Rest des alten Namens nach dem ersten "-").
Grüße
bastla
Hast Du vielleicht einen Link für mich, wo ich die Parameter nachlesen kann und wo diese erklärt werden?
Einfach einmal "for /f" an der Kommandozeile eingeben und durch die Online-Hilfe "durchbeissen" (analog bei Bedarf "dir /?" ode "ren /?") ...... ansonsten könnte ich die eine Zeile ja kurz zu erklären versuchen:
for /f "tokens=1* delims=-" %%i in ('dir /b *-*.pdf') do
ren "%%i-%%j" "%%i-200901-%%j"
Für das Umbenennen muss zunächst der alte Dateiname (grundsätzlich mit Pfad, aber hier nicht erforderlich, da der Batch schon im richtigen Ordner ausgeführt wird) angegeben werden. Dieser besteht aus dem Teil vor dem ersten "-", dem "-" und dem Rest dahinter - daher also "%%i-%%j". Die Anführungszeichen sind eigentlich nur erforderlich, wenn ein Pfad / Dateiname Leerzeichen enthält, aber da sie so gut wie nie stören, setze ich sie sicherheitshalber.
Der zweite Parameter des "ren"-Befehles ist der neue Dateiname (immer ohne Pfad). Dieser wird dann einfach aus den nötigen Teilen zusammengesetzt: %%i (Teil vor dem ersten "-" des ursprünglichen Namens), "-200901-" und "%%j" (Rest des alten Namens nach dem ersten "-").
Grüße
bastla
Hallo hboltz!
Da sich ja vermutlich "200901" in "200902" bis "200912", aber wohl auch "201001" etc, weiter entwickeln wird, wäre ev nur ein Umbenennen von Dateien, deren zweiter Namensbestandteil nicht mit "20" beginnt, eine Möglichkeit - ob damit dann Dateien auf der Strecke blieben, weil deren (lt Deinem oben dargestellten Schema) "diversenamen.pdf"-Teil ohnehin bereits mit "20" anfängt, musst Du selbst abschätzen.
Grüße
bastla
Da sich ja vermutlich "200901" in "200902" bis "200912", aber wohl auch "201001" etc, weiter entwickeln wird, wäre ev nur ein Umbenennen von Dateien, deren zweiter Namensbestandteil nicht mit "20" beginnt, eine Möglichkeit - ob damit dann Dateien auf der Strecke blieben, weil deren (lt Deinem oben dargestellten Schema) "diversenamen.pdf"-Teil ohnehin bereits mit "20" anfängt, musst Du selbst abschätzen.
for /f "tokens=1* delims=-" %%i in ('dir /b *-*.pdf') do echo %%j|findstr /b "20">nul || ren "%%i-%%j" "%%i-200901-%%j"
bastla