Problem mit bestimmten Umlaut
Hallo,
ich muss nochmal hier nachfragen, da ich mit einen Umlaut (=ß) ein Problem habe und ich nicht weiterkomme.
Über eine Batch-Routine versuche ich Umlaute (Ä,Ö,Ü,ä,ö,ü,ß) umzubenennen. Das klappt auch, bis auf den Umlaut "ß".
Folgenden Code dazu:
Obwohl auch bei "ß" die Variablen stringorg und stringnew verschieden sind wird der rename Befehl trotzdem nicht ausgeführt.
Hat jemand eine Idee woran das liegen mag?
Ich arbeite mit Windows 7.
Grüße
joe65
ich muss nochmal hier nachfragen, da ich mit einen Umlaut (=ß) ein Problem habe und ich nicht weiterkomme.
Über eine Batch-Routine versuche ich Umlaute (Ä,Ö,Ü,ä,ö,ü,ß) umzubenennen. Das klappt auch, bis auf den Umlaut "ß".
Folgenden Code dazu:
@echo off
setlocal enabledelayedexpansion
cls
mode con: cols=130 lines=50
chcp 1252
call :RenameUmlaute ad
call :RenameUmlaute a-d
pause
exit /b
:RenameUmlaute
for /f "delims=" %%i in ('dir /s /b /%1 d:\test') do (
set stringorg=%%~nxi
set stringnew=!stringorg!
call set stringnew=%%stringnew:Ä=Ae%%
call set stringnew=%%stringnew:Ö=Oe%%
call set stringnew=%%stringnew:Ü=Ue%%
call set stringnew=%%stringnew:ä=ae%%
call set stringnew=%%stringnew:ö=oe%%
call set stringnew=%%stringnew:ü=ue%%
call set stringnew=%%stringnew:ß=ss%%
echo stringorg=!stringorg!
echo stringnew=!stringnew!
pause
if not !stringorg!==!stringnew! (
rename "%%~fi" "!stringnew!"
)
)
Obwohl auch bei "ß" die Variablen stringorg und stringnew verschieden sind wird der rename Befehl trotzdem nicht ausgeführt.
Hat jemand eine Idee woran das liegen mag?
Ich arbeite mit Windows 7.
Grüße
joe65
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 240619
Url: https://administrator.de/contentid/240619
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Nabend,
also ich bastel nun schon nen bisschen dran rum, aber letztlich steh ich da wo Bastla auch im anderen Beitrag stand:
Ich hab das bissel geändert(zusammengeklaut) und in der Zeile:
liegt der Hase begraben, denn was sagt die Ausgabe?
Obwohl jeder sieht, dass _ß.txt und _ss.txt verschieden sind ist Windows der Meinung sie sind identisch.
Eine wirkliche Idee hab ich nicht mehr.
Außer hartgecodet:
Hier:
wird lediglich geschaut, ob in dem Originalstring ein ß vorhanden ist und wenn ja (&&) wird diese Datei umbenannt.
Gruß
also ich bastel nun schon nen bisschen dran rum, aber letztlich steh ich da wo Bastla auch im anderen Beitrag stand:
@echo off
setlocal enabledelayedexpansion
setlocal&for /f "tokens=2 delims=:" %%a in ('chcp') do (set /a oemcp=%%~na&chcp 1252>nul)
for /f "tokens=1-7" %%a in ('echo Ä Ö Ü ä ö ü ß^&chcp %oemcp%^>nul') do (
set au=%%a&set ou=%%b&set uu=%%c&set al=%%d&set ol=%%e&set ul=%%f&set sz=%%g)
(endlocal&set Ä=%au%&set Ö=%ou%&set Ü=%uu%&set ä=%al%&set ö=%ol%&set ü=%ul%&set ß=%sz%)
call :RenameUmlaute ad
call :RenameUmlaute a-d
pause
exit /b
:RenameUmlaute
for /f "delims=" %%i in ('dir /s /b /%1 test') do (
set stringorg=%%~nxi
set stringnew=!stringorg!
call set stringnew=%%stringnew:%Ä%=Ae%%
call set stringnew=%%stringnew:%Ö%=Oe%%
call set stringnew=%%stringnew:%Ü%=Ue%%
call set stringnew=%%stringnew:%ä%=ae%%
call set stringnew=%%stringnew:%ö%=oe%%
call set stringnew=%%stringnew:%ü%=ue%%
call set stringnew=%%stringnew:%ß%=ss%%
echo stringorg=!stringorg!
echo stringnew=!stringnew!
if !stringorg!==!stringnew! echo "Stimmt!"
pause
if not !stringorg!==!stringnew! (
rename "%%~fi" "!stringnew!"
)
)
Ich hab das bissel geändert(zusammengeklaut) und in der Zeile:
if !stringorg!==!stringnew! echo "Stimmt!"
stringorg=_ß.txt
stringnew=_ss.txt
"Stimmt"
Obwohl jeder sieht, dass _ß.txt und _ss.txt verschieden sind ist Windows der Meinung sie sind identisch.
Eine wirkliche Idee hab ich nicht mehr.
Außer hartgecodet:
@echo off
setlocal enabledelayedexpansion
setlocal&for /f "tokens=2 delims=:" %%a in ('chcp') do (set /a oemcp=%%~na&chcp 1252>nul)
for /f "tokens=1-7" %%a in ('echo Ä Ö Ü ä ö ü ß^&chcp %oemcp%^>nul') do (
set au=%%a&set ou=%%b&set uu=%%c&set al=%%d&set ol=%%e&set ul=%%f&set sz=%%g)
(endlocal&set Ä=%au%&set Ö=%ou%&set Ü=%uu%&set ä=%al%&set ö=%ol%&set ü=%ul%&set ß=%sz%)
call :RenameUmlaute ad
call :RenameUmlaute a-d
pause
exit /b
:RenameUmlaute
for /f "delims=" %%i in ('dir /s /b /%1 test') do (
set stringorg=%%~nxi
set stringnew=!stringorg!
call set stringnew=%%stringnew:%Ä%=Ae%%
call set stringnew=%%stringnew:%Ö%=Oe%%
call set stringnew=%%stringnew:%Ü%=Ue%%
call set stringnew=%%stringnew:%ä%=ae%%
call set stringnew=%%stringnew:%ö%=oe%%
call set stringnew=%%stringnew:%ü%=ue%%
call set stringnew=%%stringnew:%ß%=ss%%
echo stringorg=!stringorg!
echo stringnew=!stringnew!
pause
if not !stringorg!==!stringnew! (
rename "%%~fi" "!stringnew!"
)
echo !stringorg!|find "%ß%" && rename "%%~fi" "!stringnew!"
)
Hier:
echo !stringorg!|find "%ß%" && rename "%%~fi" "!stringnew!"
Gruß
Das zeigt es noch mal ganz klar:
Ergebnis:
echo on
chcp 1252
if ä==ae echo "Stimmt - ä=ae"
if ü==ue echo "Stimmt - ü=ue"
if ö==oe echo "Stimmt - ö=oe"
if ß==ss echo "Stimmt - ß=ss"
if Ä==Ae echo "Stimmt - Ä=Ae"
if Ü==Ue echo "Stimmt - Ü=Ue"
if Ö==Oe echo "Stimmt - Ö=Oe"
pause
Ergebnis:
echo on
chcp 1252
Aktive Codepage: 1252.
if ä == ae echo "Stimmt - ä=ae"
if ü == ue echo "Stimmt - ü=ue"
if ö == oe echo "Stimmt - ö=oe"
if ß == ss echo "Stimmt - ß=ss"
"Stimmt - ß=ss"
if Ä == Ae echo "Stimmt - Ä=Ae"
if Ü == Ue echo "Stimmt - Ü=Ue"
if Ö == Oe echo "Stimmt - Ö=Oe"
pause
Drücken Sie eine beliebige Taste . . .
Du hast recht ... klingt merkwürdig, aber klappt in der Tat. Mal sehen...
Gruß
Edit: Ist schon spät, aber das ist total logisch, weil:
ß=ss
ßö!=ssoe
deswegen nennt er es um.
So lange die Batch "meint", dass ß=ss ist wirds nicht gehen. Wie du oben auch in meinem Beispiel siehst sind ist ö nicht gleich oe usw. ß ist aber gleich ss
edit2: offenbar bekanntes Problem..http://www.technologische-hilfe.de/039-ss-039-039-039-sind-die-gleich-s ...
Gruß
Edit: Ist schon spät, aber das ist total logisch, weil:
ß=ss
ßö!=ssoe
deswegen nennt er es um.
So lange die Batch "meint", dass ß=ss ist wirds nicht gehen. Wie du oben auch in meinem Beispiel siehst sind ist ö nicht gleich oe usw. ß ist aber gleich ss
edit2: offenbar bekanntes Problem..http://www.technologische-hilfe.de/039-ss-039-039-039-sind-die-gleich-s ...