Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Leerzeichen nach jedem Zeichen einer Variable einfügen

Frage Entwicklung Batch & Shell

Mitglied: Elephantman

Elephantman (Level 1) - Jetzt verbinden

08.12.2007, aktualisiert 22:30 Uhr, 5798 Aufrufe, 2 Kommentare

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
Mitglied: bastla
08.12.2007 um 21:10 Uhr
Hallo Elephantman und willkommen im Forum!

Soferne in Deinen Telefonnummern kein "!" vorkommt, sollte es so gehen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "TelNr=+4312344568" 
03.
 
04.
if not defined TelNr echo Keine Nummer vorhanden & goto :eof 
05.
 
06.
set /a P=0 
07.
set TelNrNeu= 
08.
 
09.
:Loop 
10.
set Z=!TelNr:~%P%,1! 
11.
if "%Z%"=="" goto :Fertig 
12.
set "TelNrNeu=%TelNrNeu%%Z% " 
13.
set /a P+=1 
14.
goto :Loop 
15.
 
16.
:Fertig 
17.
set "TelNrNeu=%TelNrNeu:~0,-1%" 
18.
echo %TelNrNeu% 
19.
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:
01.
for /f "delims=" %%i in ('echo %TelNr%^|sed "s/./& /g"') do set "TelNrNeu=%%i" 
02.
set "TelNrNeu=%TelNrNeu:~0,-1%"
Bitte warten ..
Mitglied: Elephantman
08.12.2007 um 22:30 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Outlook 2016 Fehler Link einfügen

Frage von Florian86 zum Thema Microsoft Office ...

Webentwicklung
gelöst Foto Upload und Default Text einfügen (12)

Frage von smackee zum Thema Webentwicklung ...

PHP
Je nach angefragter Url einen anderen Titel einfügen (11)

Frage von Snowboarder1994 zum Thema PHP ...

VB for Applications
gelöst Bestimmtes Arrayfeld mit Variable aufrufen? - VBS (10)

Frage von gabrixl zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

DNS
gelöst Komplette TLD Überschreiben bzw eigene Definieren (10)

Frage von Herbrich19 zum Thema DNS ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...