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

Printed on: April 18, 2024 at 23:04 o'clock

Member: bastla
bastla May 27, 2009 at 17:15:08 (UTC)
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
Member: anokkona
anokkona May 28, 2009 at 20:17:36 (UTC)
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
Member: bastla
bastla May 28, 2009 at 20:38:30 (UTC)
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
Member: anokkona
anokkona Jun 04, 2009 at 09:06:17 (UTC)
Goto Top
OK jezt geht alles, vielen vielen Dank

LG Anok