michelausl
Goto Top

Batch - bitte um Hlfestellung

Hallo,

unsere TK-Anlage (3CX) übergibt eine Variable zum Öffnen externer Programme.
Die Variable (%1) sieht wie folgt aus "012345678:6123-Name des angerufenen"
Ist es möglich die vier Zahlen hinter dem Doppelpunkt (6123) zu filtern und als Variable an eine weitere Batch zu übergeben?

Ich habe noch nen 30€ Amazon Gutschein, den ich gerne für die Lösung spendiere.

Danke und viele Grüße
Michael

Content-ID: 579095

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

Ausgedruckt am: 05.12.2024 um 02:12 Uhr

Shadowminder
Shadowminder 13.06.2020 um 11:31:16 Uhr
Goto Top
geht! ich mach mich ans werk

LG

Shadowmind
Shadowminder
Shadowminder 13.06.2020 um 11:42:33 Uhr
Goto Top
@echo off

::set var1=012345678:6123-Name_des_aufgerufenen

::auslesen der textdatei

FOR /f "usebackq" %%a IN (./1.txt) DO set var1=%%a  

::ausgeben einer neuen textdatei

echo %var1:~10,4% > 1new.txt

::ende

Hier. Ich gehe davon aus das die ersten Zahlen immer gleich lang sind, so kann man eine Stringoperation durchführen.

LG

Shadowmind
MichelausL
MichelausL 13.06.2020 um 12:00:56 Uhr
Goto Top
Hallo Shadowmind,

Erstmal danke. Asche auf mein Haupt. Leider sind die ersten Zeichen nicht immer gleich lang (hätte ich erwähnen müssen), da es sich um Telefonnummern handelt.
Konstant ist immer der ":" Die 4 Zeichen dahinter werden benötigt.

Gruß
Michael
144260
Lösung 144260 13.06.2020 aktualisiert um 12:34:39 Uhr
Goto Top
Moin.
@echo off
:: übergabe des ersten Parameters an for-Schleife
for /f "tokens=2 delims=:" %%a in ("%~1") do set "num=%%a"  
:: extrahieren der ersten 4 Zeichen des zweiten Tokens des For-Loops
set "num=%num:~0,4%"  
:: ausgabe der variable
echo %num%
:: Fuer eine weitergabe an eine andere Batch entfernst du das Kommentar der folgenden Zeile und aenderst den Pfad der aufzurufenden Batch
:: call "D:\andere_batch.cmd" "%num%"  
pause
Falls der Bindestrich immer hinter der Nummer kommt kannst du es hiermit auch noch etwas abkürzen
@echo off
:: übergabe des ersten Parameters an for-Schleife mit extraktion
for /f "tokens=2 delims=:-" %%a in ("%~1") do set "num=%%a"  
:: Ausgabe der Variable
echo %num%
:: Fuer eine weitergabe an eine andere Batch entfernst du das Kommentar der folgenden Zeile und aenderst den Pfad der aufzurufenden Batch
:: call "D:\andere_batch.cmd" "%num%"  
pause
Gruß k.
MichelausL
MichelausL 13.06.2020 um 12:36:35 Uhr
Goto Top
Hallo,

habe jetzt leider keine Zeit mehr es zu probieren, sieht aber gut aus. Falls ich noch Fragen habe melde ich mich morgen.

Natürlich stehe ich zu meinem Wort und sende euch beiden gleich jeweils einen Gutschein.

Besten Dank und ein schönes Wochenende.

Michael
Shadowminder
Shadowminder 13.06.2020 um 13:50:04 Uhr
Goto Top
killpid schick! Deine lösung ist auf das spliten der variable an der stelle von ":" ausgelegt. Das kann ich bestimmt noch woanders mit einbauen! Danke!

LG

Shadowmind
MichelausL
MichelausL 14.06.2020 um 10:48:02 Uhr
Goto Top
Guten Morgen,

kurze Rückmeldung: funktioniert perfekt!

Nochmals Danke und viele Grüße

Michael