Dateinamen kürzen und vereinheitlichen
Hallo Gemeinde,
ich habe versucht, mir mit den zahlreich vorhandenen Forenbeiträgen selbst zu helfen, aber so ganz das Passende habe ich leider nicht gefunden.
Vielleicht kann mir ja einer den richtigen Denkansatz liefern.
In einem Verzeichnis werden täglich eine Anzahl Dateien gespeichert. Die Dateien haben als Dateiname immer folgenden Aufbau:
Variabler Text ... XXXX-YYYYYY.PDF
Der variable Text kann aus einem oder mehreren Wörtern bestehen und soll weg.
XXXX ist eine 4-stellige Jahreszahl (2008, 2009, 2010,...)
YYYYYY ist (derzeit) eine 6-stellige Zahl, kann aber in absehbarer Zeit eine 7. Stelle bekommen
Ziel ist es, die Dateien in ein anderes Verzeichnis zu kopieren und dabei umzubenennen, dass alles ab XXXX-YYYYYY.PDF stehen bleibt.
Also aus den Dateinamen:
Hund 2008-122332.PDF
Katze 2009-122555.PDF
Esel Kuh 2009-122566.PDF
sollen diese Dateinamen werden:
2008-122332.PDF
2009-122555.PDF
2009-122566.PDF
Wie kann ich hier vorgehen, um das in einer Batch Datei auszuführen?
ich habe versucht, mir mit den zahlreich vorhandenen Forenbeiträgen selbst zu helfen, aber so ganz das Passende habe ich leider nicht gefunden.
Vielleicht kann mir ja einer den richtigen Denkansatz liefern.
In einem Verzeichnis werden täglich eine Anzahl Dateien gespeichert. Die Dateien haben als Dateiname immer folgenden Aufbau:
Variabler Text ... XXXX-YYYYYY.PDF
Der variable Text kann aus einem oder mehreren Wörtern bestehen und soll weg.
XXXX ist eine 4-stellige Jahreszahl (2008, 2009, 2010,...)
YYYYYY ist (derzeit) eine 6-stellige Zahl, kann aber in absehbarer Zeit eine 7. Stelle bekommen
Ziel ist es, die Dateien in ein anderes Verzeichnis zu kopieren und dabei umzubenennen, dass alles ab XXXX-YYYYYY.PDF stehen bleibt.
Also aus den Dateinamen:
Hund 2008-122332.PDF
Katze 2009-122555.PDF
Esel Kuh 2009-122566.PDF
sollen diese Dateinamen werden:
2008-122332.PDF
2009-122555.PDF
2009-122566.PDF
Wie kann ich hier vorgehen, um das in einer Batch Datei auszuführen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 30.06.2009 um 16:13:37 Uhr
<OT>
</OT>
...Ziel ist es, die Dateien in ein anderes Verzeichnis zu kopieren und dabei umzubennen,
Notiz: RGC --> #407</OT>
Content-ID: 119421
Url: https://administrator.de/forum/dateinamen-kuerzen-und-vereinheitlichen-119421.html
Ausgedruckt am: 13.04.2025 um 18:04 Uhr
10 Kommentare
Neuester Kommentar
Vorausgesetzt dieser frei wähnbare text enthält kein - dann köntne es so gehen (ungetestet):
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
@echo off
set "verz=c:\verzeichnis"
FOR /F "tokens=1,2 delims=-" %%i in ('dir /B "%verz%"\*.*') do call:umbennen "%%i" "%%j"
goto:eof
:umbennen
set "firstpart=%~1"
rn "%verz%\%~1-%2" "%firstpart:~-4%-%2"
goto:eof

Ich hab ja nur darauf gewartet das Biber auf das umbennen anspringt 
Hier ist mein Ansatz der nur auf Jahreszahl im Bereich mit Strich reagiert.
Edit war ungestestet und hatte auch einen Dreher bei for /L, ein fehlendes %. Fehlermeldung unterdrückt. Alles korrigiert
Gruß
LotPings
Hier ist mein Ansatz der nur auf Jahreszahl im Bereich mit Strich reagiert.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
@Echo off&Setlocal
Set "Base=D:\Test"
Set "Dest=D:\Test\Ergebnis"
Set Ext=pdf
Pushd %Base%
For /L %%J in (2008,1,2015) Do For /F "Delims=" %%A in (
'Dir /B /A-D "*%%J-*.%Ext%" 2^>NUL ') DO Call :Process %%J "%%~fA" "%%~nA"
Pause
goto :eof
:Process
Set "Name=%~3"
Call Set Nummer=%%Name:*%1-=%%
Set NeuerName=%1-%Nummer%.%Ext%
Echo Copy %2 "%Dest%\%NeuerName%"
Edit war ungestestet und hatte auch einen Dreher bei for /L, ein fehlendes %. Fehlermeldung unterdrückt. Alles korrigiert
Gruß
LotPings
@miniversum
Hast Du Dich so darauf konzentriert, Biber mit der Zeile 6 eine Freude zu machen, dass der "-" nach "delims=" auf der Strecke geblieben ist?
Zu "rn" sage ich aber nix (außer vielleicht, dass vor das %~1 ein
Grüße
bastla
Hast Du Dich so darauf konzentriert, Biber mit der Zeile 6 eine Freude zu machen, dass der "-" nach "delims=" auf der Strecke geblieben ist?
Zu "rn" sage ich aber nix (außer vielleicht, dass vor das %~1 ein
%verz%\
passen könnte, vor allem, wenn Du oben das "Datei.txt" durch ein entsprechendes "dir /b ..." ersetzen würdest) ...Grüße
bastla
Nein das kommt daher, dass ich faul war und das For kopiert habe, dann mein Kollege was von mir wollte und ich dann nicht fertig editiert habe. Das kommt vom ablenken lassen. Hätte er mir wenigstens gesagt das sich die eine Frau da unten gesonnt hat. Aber nein. Sowas seh ich natürlich erst beim heim gehen. Naja aber ich komme vom Thema ab... Ich korrigiere es oben.
Moin Teasy30,
auch von mir ein Willkommen im Forum, Glückwunsch zu dieser leicht zu merkenden Memberid und danke für das Korrigieren dieses Umbenamsen-Unwortes.
Ich habe eben gerade eine Nachricht bzw. eine Nachfrage erhalten, wieso ihr da so ein "Projekt" draus macht.
Weil - wenn der zu erhaltende Namensteil doch immer jetzt 15, in Zukunft irgendwann 16 Zeichen wären, dann ginge es doch mit einer Zeile vom CMD-Prompt
Die Idee ist schon gut, aber es funktioniert nur, wenn auch
Aber zur Abrundung und zur Demo will ich Dir die Alternative zumindest weitergeben:
[Demo am CMD-Prompt]
Wäre, wenn Du es eher gelegentlich brauchst, ein netter Plan B.
Grüße
Biber
auch von mir ein Willkommen im Forum, Glückwunsch zu dieser leicht zu merkenden Memberid und danke für das Korrigieren dieses Umbenamsen-Unwortes.
Ich habe eben gerade eine Nachricht bzw. eine Nachfrage erhalten, wieso ihr da so ein "Projekt" draus macht.
Weil - wenn der zu erhaltende Namensteil doch immer jetzt 15, in Zukunft irgendwann 16 Zeichen wären, dann ginge es doch mit einer Zeile vom CMD-Prompt
1
for %a in (*.pdf) do set "name=%a" & move "%a" Zielverzeichnis\%name:~-15% (In Zukunft dann vielleicht :~-16)
Die Idee ist schon gut, aber es funktioniert nur, wenn auch
- "DelayedExpansion" gesetzt ist per "CMD /V" oder Registry
- oder vor der FOR-Anweisung gesetzt wird (Setlocal EnableDelayedExpansion & FOR ...)
Aber zur Abrundung und zur Demo will ich Dir die Alternative zumindest weitergeben:
[Demo am CMD-Prompt]
1
2
3
4
5
6
2
3
4
5
6
>echo blubb>"Hund Katze Maus 2008-122332.pdf"
>echo bla>"Hein Blöd 2009-123456.pdf"
>for %a in ("H* *.pdf") do @set "name=%a" & @echo move "%a" Zielverzeichnis\!name:~-15!
move "Hein Blöd 2009-123456.pdf" Zielverzeichnis\2009-123456.pdf
move "Hund Katze Maus 2008-122332.pdf" Zielverzeichnis\2008-122332.pdf
Wäre, wenn Du es eher gelegentlich brauchst, ein netter Plan B.
Grüße
Biber
Zitat von @Biber:
Ich habe eben gerade eine Nachricht bzw. eine Nachfrage erhalten,
wieso ihr da so ein "Projekt" draus macht.
Ich habe eben gerade eine Nachricht bzw. eine Nachfrage erhalten,
wieso ihr da so ein "Projekt" draus macht.
Weil viel = besser ist und es wichtig aussieht und als ob viel Hirnschmalz reingesteckt worden wäre und so.
Hihi.
Und außerdem sollte es ja ne Batch Datei sein und überhaubt..
GRINS.
Ok ok genug gespammt... Ich leg mich wieder hin.
Moin Teasy30,
*lach*
okay, mit der Forderung nach Lesbarkeit, Wartbarkeit und nach Möglichkeit sogar hin und wieder einer eingestreuten Kommentarzeile rennst Du bei mir offene türen ein.
Andererseits ... ich schieße gerne solche CMD-Oneliner schon deshalb ganz gerne mal ab, weil
Aber BTW - auch an einer anderen Aussage ist zu erkennen, dass Du im IT-Bereich unterwegs bist:
Wer so etwas per Freudscher Fehlschaltung gleichsetzt, der MUSS einfach ITler sein...
Grüße
Biber
*lach*
okay, mit der Forderung nach Lesbarkeit, Wartbarkeit und nach Möglichkeit sogar hin und wieder einer eingestreuten Kommentarzeile rennst Du bei mir offene türen ein.
Andererseits ... ich schieße gerne solche CMD-Oneliner schon deshalb ganz gerne mal ab, weil
- erfahrungsgemäß ein Batch, der vor 4 Monaten tadellos funktioniert hat und den ich HEUTE wieder blind anstarte mit hoher Wahrscheinlichkeit auf die Bretter geht - Pfade oder Konventionen haben sich geändert etc
- ich noch größere Schwierigkeiten habe, abgespeicherte Bätche überhaupt wiederzufinden... auf den Rechnern, auf denen ich abwechselnd arbeite
Aber BTW - auch an einer anderen Aussage ist zu erkennen, dass Du im IT-Bereich unterwegs bist:
warum ich das lieber "perfekt" haben will..
Es sprach niemand von "perfekt"... es ging um "Projekt".Wer so etwas per Freudscher Fehlschaltung gleichsetzt, der MUSS einfach ITler sein...
Grüße
Biber