anokkona
Goto Top

ziffern verdrehen

Hallo mitteinander

So, wenn ich in einer txt in der text steht gerne position der buchstaben ändern möchte. Wie kann ich das machen?

Also zum beispiel:

WasseR ---> RasseW

HallO ---> OallH

Aber in ner txt wo ich nicht weis wie viele buchstaben die hatt...


Kann ich das mit For Tokens Delims Lösen? ---> Wenn ja, wie?


Ich danke allen antworten

LG Anok

Content-Key: 116964

Url: https://administrator.de/contentid/116964

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: bastla
bastla 27.05.2009 um 19:15:08 Uhr
Goto Top
Hallo anokkona!

Da Du keine genaueren Angaben zu "position der buchstaben ändern" machst, nur mal Dein erstes Beispiel:
@echo off & setlocal
set "Wort=WasseR"  
set "Vertauscht=%Wort:~-1%%Wort:~1,-1%%Wort:~0,1%"  
echo %Wort% --^> %Vertauscht%
Näheres in der Hilfe zu "set" (Stichwort: "Ersetzen von Umgebungsvariablen") ...

Wenn der Vorgang für jede Zeile einer Textdatei erfolgen soll, eine "for /f"-Schleife verwenden, schematisch etwa:
@echo off & setlocal
for /f "delims=" %%i in (D:\Originaldatei.txt) do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
set "Wort=%~1"  
set "Vertauscht=%Wort:~-1%%Wort:~1,-1%%Wort:~0,1%"  
>>D:\NeueDatei.txt echo %Vertauscht%
goto :eof
Grüße
bastla
Mitglied: anokkona
anokkona 28.05.2009 um 22:17:36 Uhr
Goto Top
OK, danke funktioniert tip top.

Ausser bei der schlefe, das funktioniert nicht, ich habe alles ausprobiert, aber es führt den befehl immer nur mit dem letzten wort durch.


LG Anok
Mitglied: bastla
bastla 28.05.2009 um 22:38:30 Uhr
Goto Top
Hallo anokkona!
ich habe alles ausprobiert, aber es führt den befehl immer nur mit dem letzten wort durch.
Hast Du auch versucht, meinen Code zu verwenden face-wink?

Dieser geht davon aus, dass in jeder Zeile nur ein Wort steht - sind es mehrere Wörter pro Zeile (und soll bei jedem der Tausch erfolgen), müsste das etwa so aussehen:
@echo off & setlocal
set "Ein=D:\Originaldatei.txt"  
set "Aus=D:\NeueDatei.txt"  

if exist "%Aus%" del "%Aus%"  
for /f "usebackq delims=" %%i in ("%Ein%") do call :ProcessLine "%%i"  
type "%Aus%"  
goto :eof

:ProcessLine
set Zeile=
for %%a in (%~1) do call :ProcessWord "%%a"  
>>"%Aus%" echo %Zeile:~1%  
goto :eof

:ProcessWord
set "Wort=%~1"  
set "Zeile=%Zeile% %Wort:~-1%%Wort:~1,-1%%Wort:~0,1%"  
goto :eof
Grüße
bastla
Mitglied: anokkona
anokkona 04.06.2009 um 11:06:17 Uhr
Goto Top
OK jezt geht alles, vielen vielen Dank

LG Anok