elephantman
Goto Top

Leerzeichen nach jedem Zeichen einer Variable einfügen

Hallo zusammen,

habe mit bat Dateien bis jetzt sehr wenig gearbeitet, deswegen benötige ich Eure Hilfe...
Folgendes Problem.

Habe eine Variable, in der eine Telefonnummer gespeichert ist. Diese erhalte ich ohne jede Formate.
Hier ein paar Beispiele:
012345678
0160123456789
+4312344568

Nun bräuchte ich die Telefonnummern folgendermaßen:
0 1 2 3 4 5 6 7 8
0 1 6 0 1 2 3 4 5 6 7 8 9
+ 4 3 1 2 3 4 4 5 6 8

Kann mir jemand helfen?
Besten Dank vorab!

Gruß
Christian

Content-Key: 75542

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
bastla Dec 08, 2007 at 20:10:12 (UTC)
Goto Top
Hallo Elephantman und willkommen im Forum!

Soferne in Deinen Telefonnummern kein "!" vorkommt, sollte es so gehen:
@echo off & setlocal enabledelayedexpansion
set "TelNr=+4312344568"  

if not defined TelNr echo Keine Nummer vorhanden & goto :eof

set /a P=0
set TelNrNeu=

:Loop
set Z=!TelNr:~%P%,1!
if "%Z%"=="" goto :Fertig  
set "TelNrNeu=%TelNrNeu%%Z% "  
set /a P+=1
goto :Loop

:Fertig
set "TelNrNeu=%TelNrNeu:~0,-1%"  
echo %TelNrNeu%
goto :eof
Da nach jedem einzelnen (also auch dem letzten) Zeichen der Telefonnummer ein Leerzeichen eingefügt wird, sorgt die Zeile nach dem ":Fertig" dafür, dass das überzählige Leerzeichen am Ende entfernt wird.

Wegen der Verwendung von "delayedexpansion" gilt ein "!" als Sonderzeichen (= anstelle von "%" als Begrenzungszeichen für die "verzögert aufzulösende" Variable) und darf daher nicht Inhalt der Telefonnummer sein.

Grüße
bastla

P.S.: Mit "sed" (Download zB hier) ginge das natürlich eleganter, etwa:
for /f "delims=" %%i in ('echo %TelNr%^|sed "s/./& /g"') do set "TelNrNeu=%%i"  
set "TelNrNeu=%TelNrNeu:~0,-1%"  
Member: Elephantman
Elephantman Dec 08, 2007 at 21:30:52 (UTC)
Goto Top
Servus bastla,

na super! Auf so was wäre ich ja in 100 Jahren nicht gekommen^^
Habe mich für die sed Lösung entschieden, ist a kürzer und hat sofort funktioniert.

Vielen, Vielen Dank!

Gruß
Christian