Etwas komplizierterer Kopiervorgang mit Umlautänderung
Suche Hilfe für Umlautänderung vor Kopieren
Ich kopiere mittels eines batchfiles mehrere Dateien inklusive deren Ordnerstruktur von einem Ort zum anderen. Allerdings kommt es hin und wieder vor (die Ordner/Dateien werden von vielen Personen bearbeitet), dass sich Fehler einschleichen.
So darf bspw. in den Ordnernamen und den Dateinamen kein Umlaut enthalten sein. Außerdem dürfen keine Sonderzeichen, Striche oder ähnliches enthalten sein.
Bis auf zwei Ausnahmen:
Die Dateien sind immer folgendermaßen aufgebaut:
1.: BG-BRB-%vorname% %nachname%.xls
2.: BBGU-%vorname% %nachname%.doc
Die hier enthaltenen Bindestriche müssen auf jeden Fall bleiben. Die Teile %vorname% und %nachname%, die in diesem Fall die Variablen für den Namen darstellen, der hier hingehört, dürfen allerdings keine Sonderzeichen außer einem Leerzeichen enthalten.
Bsp: RICHTIG: BG-BRB-Hans Muster.xls
Bsp: FALSCH: BG-BRB-Hans_Muster.xls
Wie kann ich das per batch bewerkstelligen? Es sind leider sehr sehr viele Datensätze, sodass es händisch eigentlich nicht oder nur sehr mühselig machbar ist.
Und wie kann ich es bewerkstelligen, dass jenes batchfile vorher die Order- und Dateinamen auf Umlaute überprüft und diese ersetzt? Bsp: ä wird ae
Hiiiilfe =)
die batchpflaume
So darf bspw. in den Ordnernamen und den Dateinamen kein Umlaut enthalten sein. Außerdem dürfen keine Sonderzeichen, Striche oder ähnliches enthalten sein.
Bis auf zwei Ausnahmen:
Die Dateien sind immer folgendermaßen aufgebaut:
1.: BG-BRB-%vorname% %nachname%.xls
2.: BBGU-%vorname% %nachname%.doc
Die hier enthaltenen Bindestriche müssen auf jeden Fall bleiben. Die Teile %vorname% und %nachname%, die in diesem Fall die Variablen für den Namen darstellen, der hier hingehört, dürfen allerdings keine Sonderzeichen außer einem Leerzeichen enthalten.
Bsp: RICHTIG: BG-BRB-Hans Muster.xls
Bsp: FALSCH: BG-BRB-Hans_Muster.xls
Wie kann ich das per batch bewerkstelligen? Es sind leider sehr sehr viele Datensätze, sodass es händisch eigentlich nicht oder nur sehr mühselig machbar ist.
Und wie kann ich es bewerkstelligen, dass jenes batchfile vorher die Order- und Dateinamen auf Umlaute überprüft und diese ersetzt? Bsp: ä wird ae
Hiiiilfe =)
die batchpflaume
Please also mark the comments that contributed to the solution of the article
Content-Key: 71109
Url: https://administrator.de/contentid/71109
Printed on: April 23, 2024 at 18:04 o'clock
6 Comments
Latest comment
Wie soll den Festgestellt werden wie eine
Datei namens
"BG-BRB-Hans_Muster.xls" wirklich
heissen soll?
Sollen alle "_" durch "
" ersetzt werden?
miniversum
Datei namens
"BG-BRB-Hans_Muster.xls" wirklich
heissen soll?
Sollen alle "_" durch "
" ersetzt werden?
miniversum
Bsp: RICHTIG: BG-BRB-Hans Muster.xls
Bsp: FALSCH: BG-BRB-Hans_Muster.xls
eventuell von Punkt x bis Punkt y klarstellen, dass jegliche Sonderzeichen durch ein Leerzeichen ersetzt werden?
*grmmmmmmpf*
Beispiel für eine straight-forward-Lösung:
In Aktion im angenommenen %RootDir% D:\temp\bp:
Nach dem Testen kann natürlich das "echo rename" durch "rename" ersetzt werden.
Ginge auch kürzer.... aber aus Gründen der Wartbarkeit...
Anmerkung:
Da nun auch Dateinamen gegen mehrere Deiner Konventionen verstossen könnten ("hänschen_Müller-Mylch.xyz)", wäre eine noch stumpfere Abarbeitung noch sinnvoller:
...denn bei der ersten geposteten Variante kann es sein, dass die umzubenennende Datei schon ganz anders heißt...
Grüße
Biber
Hiiiilfe =)
die batchpflaume
Auch ein "etwas komplizierterer Kopiervorgang" ist IMHOdie batchpflaume
- weder ein Grund für so einen Nick
- noch für dieses "Hiiiilfe =)"
Beispiel für eine straight-forward-Lösung:
:: ---------snipp MultiRenamer.bat
@echo off & setlocal enableDelayedExpansion
Set "RootDir=D:\temp\bp"
for /R "%RootDir%" %%i in (*_* *ä* *ü* *ö* *ß*) do (
set "x=%%~nxi"
Set "x=!x:ä=ae!"
Set "x=!x:ü=ue!"
Set "x=!x:ö=oe!"
Set "x=!x:ß=ss!"
Echo Rename "%%i" "!x!"
)
:: ---------snapp MultiRenamer.bat
>dir d:\temp\bp /b
BG-BRB-Hans Muster.xxx
BG-BRB-Hänschen Muster.xxx
BG-BRB-Hänschen_Master.xxx
BG-BRB-HÄnschen_Meister.xxx
>d:\work\MultiRenamer.bat
rename "D:\temp\bp\BG-BRB-Hänschen_Master.xxx" "BG-BRB-Hänschen-Master.xxx"
rename "D:\temp\bp\BG-BRB-HÄnschen_Meister.xxx" "BG-BRB-HÄnschen-Meister.xxx"
rename "D:\temp\bp\BG-BRB-Hänschen Muster.xxx" "BG-BRB-Haenschen Muster.xxx"
rename "D:\temp\bp\BG-BRB-Hänschen_Master.xxx" "BG-BRB-Haenschen_Master.xxx"
rename "D:\temp\bp\BG-BRB-HÄnschen_Meister.xxx" "BG-BRB-Haenschen_Meister.xxx"
Nach dem Testen kann natürlich das "echo rename" durch "rename" ersetzt werden.
Ginge auch kürzer.... aber aus Gründen der Wartbarkeit...
Anmerkung:
Da nun auch Dateinamen gegen mehrere Deiner Konventionen verstossen könnten ("hänschen_Müller-Mylch.xyz)", wäre eine noch stumpfere Abarbeitung noch sinnvoller:
:: ---------snipp MultiRenamer.bat
@echo off & setlocal enableDelayedExpansion
Set "RootDir=D:\temp\bp"
for /R "%RootDir%" %%i in (*ä*) do set "x=%%~nxi" && @echo rename "%%i" "!x:ä=ae!"
for /R "%RootDir%" %%i in (*ü*) do set "x=%%~nxi" && @echo rename "%%i" "!x:ü=ue!"
for /R "%RootDir%" %%i in (*ö*) do set "x=%%~nxi" && @echo rename "%%i" "!x:ö=oe!"
for /R "%RootDir%" %%i in (*ß*) do set "x=%%~nxi" && @echo rename "%%i" "!x:ß=ss!"
Grüße
Biber