
42687
29.05.2009, aktualisiert um 19:10:56 Uhr
Umlaute aus Variable entfernen, und dann nicht benutze Kombination aus Vor- und Nachnamen bilden
Hallo,
ich habe eine Batch, die aus einer CSV-Datei die Nutzer ausließt und in %%a, usw. ablegt.
Hier das Script:
So, wie kann ich alle Umlaute (ä durch ae; ü durch ue und ö durch oe) ersetzten?
Normal soll der Benutzername gleich der Vorname und Ordnername sein. Aber ist der Benutzername schon vorhanden, soll der Benutzername Vorname und ein Buchstabe vom Nachname zu sein. Bsp: WilliS. Wenn das schon vorhanden ist, soll der Username WilliSc sein. Danke.
ich habe eine Batch, die aus einer CSV-Datei die Nutzer ausließt und in %%a, usw. ablegt.
Hier das Script:
@echo on
echo Aufnahme von Willi Schmidt aus CSV
echo Februar 2009
title SNW-Systems - Aufnahme aus CSV
rem -----------------------------------------------------------------------------------------------------
Rem Dateibrowser zum anwählen der Datei
echo Bitte geben Sie den Namen der zu importierenden CSV-Datei an>info.tmp
echo quelle.csv>>info.tmp
echo \\%logonserver%>>info.tmp
echo (*.csv):*.csv>>info.tmp
call winscript FileOpenBox info.tmp
Rem ### Ergebnis mitteilen
echo Ergebnis>info.tmp
echo OK>>info.tmp
echo Der Dateiname lautet "%wsresult%".>>info.tmp
del info.tmp
rem --------------------------------------------------------------------------------------------------------
rem nun auslesen
set "Namensliste=%wsresult%"
set "Delim=;"
for /f "usebackq tokens=1-8 delims=%Delim%" %%a in ("%Namensliste%") do (
set "benutzername=%%a"
set "vorname=%%b"
set "nachname=%%c"
set "fullname=%%d"
set "klasse=%%e"
set "bday=%%f"
set "sex=%%g"
rem nun alles erforderliche unternehmen
if not exist "\\server\KLASSEN\%%e" md "\\server\KLASSEN\%%e"
if exist "\\server\KLASSEN\%%e\%%a" echo msgbox "Schüler mit Benutzernamen _%%a_ in Klasse %%e bereits vorhanden, doppelte Aufführung oder doppelter Vorname. Nutzer wird als _%%a%%c:~0,1_ angemeldet.",48,"Benutzername bereits vorhanden">>vorhanden.vbs & vorhanden.vbs & del vorhanden.vbs & if not exist "\\server\KLASSEN\%%e\%%b%%c:~0,1%" md "\\Server\Klassen\%%e\%vorname%%nachname:~0,1%" & echo %vorname%%nachname:~0,1%;%%b;%%c;%%d;yes;%%f;%%g;%%h>> \\server\KLASSEN\%%e_info.csv
rem Schüler einfügen
if not exist "\\server\KLASSEN\%%e\%%a" md "\\Server\Klassen\%%e\%%a"
echo %%a;%%b;%%c;%%d;yes;%%f;%%g;%%h>> \\server\KLASSEN\%%e_info.csv
:nach
xcopy "\\Server\vorlage" "\\Server\Klassen\%%e\%%a" /E /C /Y /Q /D
echo Der/Die Schüler/in %%d wurde erfolgreich in die Klasse %%e aufgenommen. >> \\Server\LOG\aufnahme_schueler.log
echo %%d erfolgreich angemeldet.
)
pause
So, wie kann ich alle Umlaute (ä durch ae; ü durch ue und ö durch oe) ersetzten?
Normal soll der Benutzername gleich der Vorname und Ordnername sein. Aber ist der Benutzername schon vorhanden, soll der Benutzername Vorname und ein Buchstabe vom Nachname zu sein. Bsp: WilliS. Wenn das schon vorhanden ist, soll der Username WilliSc sein. Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 117139
Url: https://administrator.de/forum/umlaute-aus-variable-entfernen-und-dann-nicht-benutze-kombination-aus-vor-und-nachnamen-bilden-117139.html
Ausgedruckt am: 29.04.2025 um 17:04 Uhr
11 Kommentare
Neuester Kommentar

Ich habe mir deine Batchdatei nicht angesehen,
vielleicht kannst du ja etwas mit dieser Funktion anfangen.
Gruß
LotPings
vielleicht kannst du ja etwas mit dieser Funktion anfangen.
::UmlautEx.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
Call :UmlautEx "Müller"
Echo.%UmlautEx%
Call :UmlautEx "Überhorst"
Echo.%UmlautEx%
Call :UmlautEx "Öter"
Echo.%UmlautEx%
Call :UmlautEx "Ärmel"
Echo.%UmlautEx%
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:UmlautEx
setlocal
set Wort=%~1
set Anfang=%Wort:~,1%
If "%Anfang%"=="Ä" set Anfang=Ae
If "%Anfang%"=="Ö" set Anfang=Oe
If "%Anfang%"=="Ü" set Anfang=Ue
Set Rest=%Wort:~1%
Set Rest=%Rest:ä=ae%
Set Rest=%Rest:ö=oe%
Set Rest=%Rest:ü=ue%
::Set Rest=%Rest:ß=ss%
endlocal&set "UmlautEx=%Anfang%%Rest%"&goto :eof
::UmlautEx.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::
Gruß
LotPings

Zitat von @42687:
vielleicht könntest du mir was dazu erklären.
Das ist eine Funktion UmlautEx der via Call :sub ein Text übergeben wird, das Ergebnis wird in einer Variable mit dem gleichen Namen UmlautEx zurückgegeben.vielleicht könntest du mir was dazu erklären.
Ich habe es einfach mal so eingegeben und komme zu keinem ergebnis. danke.
EIngegeben?Wenn dann bitte Quelltext anklicken, alles markieren und kopieren.
Batchdateien in Entwicklung lässt man grundsätzlich in einem offenen CMD Fenster laufen.
Dann siehst du auch ein Ergebnis.
Gruß
LotPings

Zitat von @42687:
so hab ich auch.
Na dann sollte es doch auch funktionieren.so hab ich auch.
bitte guck dir mal meine batch an. der lies eine CSV aus und soll die gegebene Variable %%a gleich %benutzername% auf umlaute untersuchen und dann den %benutzername% ohne umlaute ausgeben und wieder in die variable schreiben. thx.
Das ganze kann aber nicht funktionieren, erstens fehlt Delayed Expansion (siehe dir dazu die Hilfe von setlocal /? und cmd /? an) und zweitens ist die ganze Zeile 32 ein einziger Mist.wenn ich die variable %%a am anfang deiner batch in %username% ändere und manuell set
"username=Müller", dann den quelltext einfüge und
echo %username% kommt Müller raus. bb
Ist auch nicht anders zu erwarten, da die Funktion UmlautEx ihr Ergebnis in der Variable UmlautEx zurückgibt. Wenn du diese Variable gar nicht ansprichst, hast du auch nicht die Rückgabe."username=Müller", dann den quelltext einfüge und
echo %username% kommt Müller raus. bb
Gruß
LotPings

Am Anfang muss immer noch
eingebaut werden.
Deine Fehlermeldung ist ohne kompletten Kontext schwer einzugrenzen, versuchs mal mit dieser geänderten for Schleife.
Gruß
LotPings
Setlocal EnableDelayedExpansion
eingebaut werden.
Deine Fehlermeldung ist ohne kompletten Kontext schwer einzugrenzen, versuchs mal mit dieser geänderten for Schleife.
for /f "tokens=1-8 delims=%Delim%" %%a in (' Type "%Namensliste%" ') do (
Call :UmlautEx "%%a"
set "benutzername=!UmlautEx!"
set "vorname=%%b"
set "nachname=%%c"
set "fullname=%%d"
set "klasse=%%e"
set "bday=%%f"
set "sex=%%g"
Gruß
LotPings

Sorry, mein Fehler - Schreibfehler.
SetLocal EnableDelayedExpansion.
Bitte versuche dich beim posten auf relevante Fehler zu beschränken.
Der Sinn einer Sub oder Funktion besteht darin, das sie aus dem Code heraus mit unterschiedlichem Werten aufgerufen werden kann. Sie muss aber abgetrennt vom eigentlichen Code am Ende stehen.
Die Art und Weise wie du versuchst ( von dir nicht verstandene) Codeschnipsel zusammen zufügen, lässt jedes programmtechnische Verständnis vermissen.
Damit fehlt die Basis für die Hilfe die ich bereit bin zu geben.
Sorry, aber meiner Meinung nach bist du mit deinem derzeitigen Wissen mit der Aufgabe hoffnungslos überfordert.
Gruß
LotPings
SetLocal EnableDelayedExpansion.
Bitte versuche dich beim posten auf relevante Fehler zu beschränken.
Der Sinn einer Sub oder Funktion besteht darin, das sie aus dem Code heraus mit unterschiedlichem Werten aufgerufen werden kann. Sie muss aber abgetrennt vom eigentlichen Code am Ende stehen.
Die Art und Weise wie du versuchst ( von dir nicht verstandene) Codeschnipsel zusammen zufügen, lässt jedes programmtechnische Verständnis vermissen.
Damit fehlt die Basis für die Hilfe die ich bereit bin zu geben.
Sorry, aber meiner Meinung nach bist du mit deinem derzeitigen Wissen mit der Aufgabe hoffnungslos überfordert.
Gruß
LotPings