lefg 276 Geschrieben 23. November 2012 Melden Teilen Geschrieben 23. November 2012 (bearbeitet) Werte Gemeinde, in der Erläuterung des Set-Befehls steht: Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert: %PATH:str1=str2% Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere Zeichenfolge sein, um alle Instanzen von "str1" aus der erweiterten Ausgabe zu löschen. Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des übrigen Abschnitts von "str1". Wenn ich da das so anwende, set surname=loeffler set surname=%surname:l=L% echo %surname% pause werden beide kleine l-Buchstaben durch grosse ersetzt, es soll aber nur mit dem ersten geschehen. Natürlich könnte ich nun den ersten Buchstaben und den Rest voneinander extrahieren und nach dem Ersetzen des ersten wieder vereinigen. set surname=loeffler set pro=%surname:~0,1% set epi=%surname:~1% echo %pro% echo %epi% set pro=%pro:l=L% echo %pro% set surname=%pro%%epi% echo %surname% pause loeffler L Loeffler Ich suchte im Web nach einem Trick, Extraktion und Substitution zu vereinigen, genauer, das erste Zeichen adressiert zu ersetzen, wurde aber nicht fündig. Hat jemand eine Idee? Ich weiß es natürlich, eigentlich löst man sowas mit VBS oder Powershell. Habt Dank für Aufmerksamkeit und Rat. Edgar bearbeitet 23. November 2012 von lefg Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. November 2012 Autor Melden Teilen Geschrieben 24. November 2012 Ich bin nicht sehr hoffnungsvoll, schiebe den Thread aber trotzdem mal nach oben. :) Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 25. November 2012 Melden Teilen Geschrieben 25. November 2012 Hi, und warum machst Du es denn nicht mit einer Script-Sprache ? Eine Kombination aus SUBTR, UCASE und REPLACE sollte weiterhelfen. -Zahni Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 25. November 2012 Autor Melden Teilen Geschrieben 25. November 2012 Moin, ich weiß es natürlich, eigentlich löst man sowas mit VBS oder Powershell; die Batch zum Anlegen der Benutzer, der OU, der Sicherheitsgruppen, der Verzeichnisse, zum Ändern der Berechtigungen, die existiert aber schon. Off-Topic:Ich bin nur einmal einem Menschen begegenet, von dem ich glaubte, er kenne den Kommandoprozessor so gut, dass er mein Problem hätte so lösen können. Leider scheint er verstorben zu sein, seine letzte Aktiviät 2009 hier am Board und eine Trauenranzeige passen zusammen. Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 25. November 2012 Melden Teilen Geschrieben 25. November 2012 Ein (vorerst) kleines Script kann man aber auch aus einer Batch-Datei heraus aufrufen. Vielleicht als Start für eine "schleichende" Migration ;) Ich finde nicht, dass sich komplexe Batch-Scripte leicht lesen lassen... Zitieren Link zu diesem Kommentar
Zoni 10 Geschrieben 25. November 2012 Melden Teilen Geschrieben 25. November 2012 Hallo, hier ist auch eine Lösung: title case - Make the first letter of user input a capital in a batch script - Stack Overflow Dort wird eine Hilfsfunktion FirstUp definiert, die den ersten Buchstaben eines Strings in Großbuchstaben wandelt. Aber die Funktionsweise ist ja gleich der schon gefundenen Lösung mit dem Aufsplitten und Zusammenfügen. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 25. November 2012 Autor Melden Teilen Geschrieben 25. November 2012 Danke Zoni, das ist eine interessante Lösung. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. November 2012 Autor Melden Teilen Geschrieben 27. November 2012 Den Kameraden Maneich hatte ich bereits aufgegeben, tatsächlich gibt es ihn aber noch und er antwortete auf meine Mail, schickte eine Lösung. set str=kennwort setlocal enabledelayedexpansion ::1.Buchstaben extrahieren set str1=%str:~0,1% echo %str1% ::1.Buchstabe in Goß umwandeln, auch wenn bereits groß for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z") do ( set "str1=!str1:%%~a!" ) echo %str1% ::Zusammensetzung des Kennworts mit Groß 1.Buchstabe set str=%str1%%str:~1% echo %str% pause Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. November 2012 Autor Melden Teilen Geschrieben 27. November 2012 (bearbeitet) Eine Lösung aus dem Link von Zoni: setlocal EnableDelayedExpansion call :FirstUp result kennwort echo !result! pause goto :eof :FirstUp setlocal EnableDelayedExpansion set "temp=%~2" set "helper=##AABBCCDDEEFFGGHHIIJJkKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ" set "first=!helper:*%temp:~0,1%=!" set "first=!first:~0,1!" if "!first!"=="#" set "first=!temp:~0,1!" set "temp=!first!!temp:~1!" ( endlocal set "result=%temp%" goto :eof ) Es funktioniert auch ohne die Anführungszeichen. bearbeitet 27. November 2012 von lefg Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.