Umlaute in Dateinamen per Batch ändern
In mehreren Dateinamen die Umlaute ersetzen
Hallo zusammen,
ich habe folgendes Problem:
ich möchte unter Windows 2000/XP in Dateinamen (in einem beliebigen Ordner und allen seinen Unterordnern) Umlaute und das "ß" ersetzen. Ä durch ae, ß durch ss etc. Es handelt sich insgesamt um viele Ordner auf einigen Rechnern, so dass ich gerne eine Automatisierung hätte.
Ich habe hierzu versucht, eine Batchdatei zu schreiben. Leider sind meine Kenntnisse auf dem Gebiet praktisch nicht vorhanden. Die Suche hier im Forum und im Netz war erfolglos, das einzige, was in etwa in meine Richtung geht, ist folgendes:
@echo off
set chars=„ ” � á
for /F %%a in ('dir /b *.*') do (
for %%m in (%chars%) do (
echo %%a | find /i "%%m">nul && echo schlecht: [%%m] in %%a
)
call :replace "%%a"
)
pause>nul
exit
:replace
set newname=%1
set newname=%newname:„=ae%
set newname=%newname:”=oe%
set newname=%newname:�=ue%
set newname=%newname:á=ss%
if NOT "%newname%"=="%1" echo ----- Vorschlag zum Umbenennen: && echo VON : %1 && echo NACH: %newname% && echo.
Doch hier findet zum Einen keine Ersetzung statt, aber entscheiden ist: nach einem Leerzeichen werden die Umlaute etc. nicht gefunden. Bsp.: öä ß.txt, hier wird nur ö und ä gefunden, nicht aber das ß. Ich weiß, Leerzeichen in Dateineme sind schlecht, meinen Mitarbeitern ist das aber nicht abzugewöhnen. Ich hoffe, hier weiß jemand dazu Rat, ich bin für jede Hilfe oder Anregung offen.
Vielen Dank und viele Grüße,
Tillixx
Hallo zusammen,
ich habe folgendes Problem:
ich möchte unter Windows 2000/XP in Dateinamen (in einem beliebigen Ordner und allen seinen Unterordnern) Umlaute und das "ß" ersetzen. Ä durch ae, ß durch ss etc. Es handelt sich insgesamt um viele Ordner auf einigen Rechnern, so dass ich gerne eine Automatisierung hätte.
Ich habe hierzu versucht, eine Batchdatei zu schreiben. Leider sind meine Kenntnisse auf dem Gebiet praktisch nicht vorhanden. Die Suche hier im Forum und im Netz war erfolglos, das einzige, was in etwa in meine Richtung geht, ist folgendes:
@echo off
set chars=„ ” � á
for /F %%a in ('dir /b *.*') do (
for %%m in (%chars%) do (
echo %%a | find /i "%%m">nul && echo schlecht: [%%m] in %%a
)
call :replace "%%a"
)
pause>nul
exit
:replace
set newname=%1
set newname=%newname:„=ae%
set newname=%newname:”=oe%
set newname=%newname:�=ue%
set newname=%newname:á=ss%
if NOT "%newname%"=="%1" echo ----- Vorschlag zum Umbenennen: && echo VON : %1 && echo NACH: %newname% && echo.
Doch hier findet zum Einen keine Ersetzung statt, aber entscheiden ist: nach einem Leerzeichen werden die Umlaute etc. nicht gefunden. Bsp.: öä ß.txt, hier wird nur ö und ä gefunden, nicht aber das ß. Ich weiß, Leerzeichen in Dateineme sind schlecht, meinen Mitarbeitern ist das aber nicht abzugewöhnen. Ich hoffe, hier weiß jemand dazu Rat, ich bin für jede Hilfe oder Anregung offen.
Vielen Dank und viele Grüße,
Tillixx
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50977
Url: https://administrator.de/contentid/50977
Ausgedruckt am: 24.11.2024 um 14:11 Uhr
3 Kommentare
Neuester Kommentar
Moin tillixx07,
willkommen im Forum.
Zwei Antworten vorab:
- natürlich "gibt es eine Möglichkeit", mit Batch derlei Umbenennungen durchzuführen.
- zum anderen ist Dein Ansatz eigentlich auch korrekt und lauffähig.
Ein Klemmer sind die "Dateinamen mit Leerzeichen", die nicht aufgelöst werden.
Dazu muss nur erweitert werden von
Was die Umlaut-Ersetzung angeht, machst Du Dir das Leben unnötig schwer.
Da kannst mit an Sicherheit grenzender Wahrscheinlichkeit die z.B im Office oder Explorer "entstandenen" Dateinamen, in denen ein über Tastatur eingegebenes ä, ü oder ß enthalten ist, auch im Batch/ am CMD-Prompt als ä, ü oder ß anzeigen lassen.
Und brauchst nicht diesen Umweg über diese kryptischen Zeichen gehen.
Das stellst Du mit dem Befehl CHCP ein.
Am CMD-Prompt: CHCP -------->zeigt die akuelle Codepage an. Normalerweise 850.
Wechseln auf windows/GUI-konforme Codepage: CHCP 1252.
Der Effekt ist der gleiche, ob Du nun mit Codepage 850 schreibst:
Gruss
Biber
willkommen im Forum.
Zwei Antworten vorab:
- natürlich "gibt es eine Möglichkeit", mit Batch derlei Umbenennungen durchzuführen.
- zum anderen ist Dein Ansatz eigentlich auch korrekt und lauffähig.
Ein Klemmer sind die "Dateinamen mit Leerzeichen", die nicht aufgelöst werden.
Dazu muss nur erweitert werden von
for /F %%a in ('dir /b *.*') do ( [....something with %%a...]
...auf...
for /F "delims=" %%a in ('dir /b *.*') do ( [....something with "%%a"...]
...auf...
for /F "delims=" %%a in ('dir /b *.*') do ( [....something with "%%a"...]
Was die Umlaut-Ersetzung angeht, machst Du Dir das Leben unnötig schwer.
Da kannst mit an Sicherheit grenzender Wahrscheinlichkeit die z.B im Office oder Explorer "entstandenen" Dateinamen, in denen ein über Tastatur eingegebenes ä, ü oder ß enthalten ist, auch im Batch/ am CMD-Prompt als ä, ü oder ß anzeigen lassen.
Und brauchst nicht diesen Umweg über diese kryptischen Zeichen gehen.
Das stellst Du mit dem Befehl CHCP ein.
Am CMD-Prompt: CHCP -------->zeigt die akuelle Codepage an. Normalerweise 850.
Wechseln auf windows/GUI-konforme Codepage: CHCP 1252.
Der Effekt ist der gleiche, ob Du nun mit Codepage 850 schreibst:
>for /f "delims=" %i in ('dir /s /b t:\*stcklistenpr*.*') do @set "old=%~nxi" & @echo rename "%i" !old:=ue!
rename "t:\Anforderungen\Stcklistenprfung.doc" Stuecklistenpruefung.doc
--oder ---
>chcp 1252
Aktive Codepage: 1252.
>for /f "delims=" %i in ('dir /s /b t:\*stücklistenprü*.*') do @set "old=%~nxi" & @echo rename "%i" !old:ü=ue!
rename "t:\Anforderungen\Stücklistenprüfung.doc" Stuecklistenpruefung.doc
Gruss
Biber