Rumak18 11 Geschrieben 3. Dezember 2012 Melden Geschrieben 3. Dezember 2012 Hallo, ich habe folgendes Script: @echo off for /F "tokens=*" %%i in (c:\list.txt) do ( echo %%i set NEWi=%%i: =.%" echo %NEWi% ) Die list.txt enthält: Max Moritz Müller Milch Nun möchte ich zwischen dem VOrnamen und Nachnamen das Leerzeichen durch einen Punkt ersetzen...schaffe es aber nicht, wie ihr euch denken könnte. Kann mir Jemand helfen?
Dukel 468 Geschrieben 3. Dezember 2012 Melden Geschrieben 3. Dezember 2012 Nimm Powershell: Get-Content c:\list.txt | % { $_.replace(' ','.') } Alternativ mit -split und -join.
Rumak18 11 Geschrieben 4. Dezember 2012 Autor Melden Geschrieben 4. Dezember 2012 Danke, aber Power Shell möchte ich nicht. So...eine Lösung habe ich gefunden, allerdings nicht den Sinn verstanden: @echo off & setLocal EnableDelayedExpansionset str=joe smith echo !str! for /f "tokens=1-2 delims= " %%a in ("!str!") do ( set var=%%a.%%b ) echo !var! Wofür stehen denn die Ausrufezeichen?
lefg 276 Geschrieben 4. Dezember 2012 Melden Geschrieben 4. Dezember 2012 Hallo for /F "tokens=*" %%i in (List.txt) do set var=%%i echo %var% set NEWi=%var: =.%" echo %NEWi% pause
Rumak18 11 Geschrieben 4. Dezember 2012 Autor Melden Geschrieben 4. Dezember 2012 Sorry, aber bei mir klappt das Script nicht. Es gibt mir nur den letzten Satz aus der Liste aus. Den ersten scheint es zu überspringen.
lefg 276 Geschrieben 5. Dezember 2012 Melden Geschrieben 5. Dezember 2012 (bearbeitet) Da hst Du recht, die Schleife wird zwar zweimal abgearbeitet, der Rest aber nur einmal. Ich schau mal. Ob es so hilft? for /F "tokens=*" %%i in (List.txt) do Call :work %%i pause :work set var=%1.%2 echo %var% goto :eof Eine Abwandlung: for /F "tokens=*" %%i in (List.txt) do set var=%%i & Call :work pause :work echo %var% set var=%var: =.% echo %var% set var=%var:~0,-1% echo %var% pause goto :eof bearbeitet 5. Dezember 2012 von lefg
Cybquest 36 Geschrieben 5. Dezember 2012 Melden Geschrieben 5. Dezember 2012 Danke, aber Power Shell möchte ich nicht. So...eine Lösung habe ich gefunden, allerdings nicht den Sinn verstanden: Wofür stehen denn die Ausrufezeichen? Die Ausrufezeichen verwendet man, um die "Delayed" Variablen auszugeben. Durch dieses "EnableDelayedExpansion" wird der Interpreter angewiesen, Variablenzuweisungen auch innerhalb von Funktionsblöcken (IF, DO...) auszuwerten. Einfach mal danach googlen. Hier ist z.B. ne ganz nette Erläuterung: Environment variable expansion occurs when the command is read - The Old New Thing - Site Home - MSDN Blogs EDIT: Übrigens müsste m.E. das "echo !var!" innerhalb des DO (also ÜBER der Klammer) stehen.
lefg 276 Geschrieben 5. Dezember 2012 Melden Geschrieben 5. Dezember 2012 (bearbeitet) setLocal EnableDelayedExpansion for /f "tokens=*" %%i in (List.txt) do ( set var=%%i echo %var% ; bringt die Variable nicht zur Anzeige echo !var! ; bringt die Variable zur Anzeige set var=!var: =.! echo !var! ) Endlocal pause bearbeitet 5. Dezember 2012 von lefg
Rumak18 11 Geschrieben 18. Januar 2013 Autor Melden Geschrieben 18. Januar 2013 Vielen Dank für euere Bemühungen. Ich denke, dass ich es so weit verstanden habe. Mein Script sieht nun etwas anders aus. Ich habe den Punkt in die Namen anderweitig reingebracht. for /F "tokens=1-2 delims= " %%a in (c:\list.txt) do ( echo %%a.%%b pause echo %%a %%b pause )
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden