Rumak18 11 Geschrieben 3. Dezember 2012 Melden Teilen 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? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Dezember 2012 Melden Teilen Geschrieben 3. Dezember 2012 Nimm Powershell: Get-Content c:\list.txt | % { $_.replace(' ','.') } Alternativ mit -split und -join. Zitieren Link zu diesem Kommentar
Rumak18 11 Geschrieben 4. Dezember 2012 Autor Melden Teilen 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? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 4. Dezember 2012 Melden Teilen Geschrieben 4. Dezember 2012 Hallo for /F "tokens=*" %%i in (List.txt) do set var=%%i echo %var% set NEWi=%var: =.%" echo %NEWi% pause Zitieren Link zu diesem Kommentar
Rumak18 11 Geschrieben 4. Dezember 2012 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. Dezember 2012 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 5. Dezember 2012 Melden Teilen 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. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. Dezember 2012 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Rumak18 11 Geschrieben 18. Januar 2013 Autor Melden Teilen 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 ) 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.