kunzibus
Goto Top

SMS Versand per CMD Line, Nummer und Text aus txt auslesen

Hallo liebe Community!

ich möchte einen Text der in txt files abgespeichert wird. Über sms versenden

Ich kann mit Hilfe von smscmd mit folgendem Befehl eine SMS generieren.

c:\cmdsms\cmdsms.exe -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer +43123456789 -Message "hier gehen insgesamt 160 zeichen rein"

So nun zur Aufgabenstellung:

Vom ERP System wird eine Datei sms.txt mit folgendem Inhalt generiert.

Inhalt sms.txt
0664123456789 | 01.07.2013; 18:30; VA: 12345; Mustermann Max; Mustergasse 12; 1234; Alm; 0123456789;0; 6 Pers: 1Clown, 2 Hunde: V-Control, Tombola ;0664/12345678 ; http://www.linkzurva.at/hugo123.php; geplant ist test ;Bitte mit text ausfüllen

Nun soll eine sendsms.cmd die nummer auslesen und dann die ersten 160 zeichen (ohne nummer) vom text in einer sms versenden. In einer zweiten sms soll die restlichen zeichen versendet werden.

Dann soll die sms.txt in sms_%date%%time% umbenannt werden und in den Ordner gesendet kopiert werden.

Meine Versuche poste ich jetzt gar nicht weil wenns ie hier jemand auskennt wahrscheinlich nur drüber lacht.

Ich würde mich voll freuen wenn mir jemand zeigen kann wie ich mit for die nummer und 160 zeichen auslesen kann und diese dann mit den variablen in den cmd befehl einbauen kann.


Mfg

kunzibus


Download smscmd
http://www.softpedia.com/get/Internet/Telephony-SMS-GSM/SMSCMD.shtml

Content-ID: 211601

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

colinardo
colinardo 16.07.2013 aktualisiert um 13:14:44 Uhr
Goto Top
Hallo kunzibus,
könnte z.B. so aussehen:
(Script in den Ordner kopieren wo die sms.txt liegt..)
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "file=sms.txt"  
set /p raw_sms=<%file%
if not exist "%~dp0gesendet" md "%~dp0gesendet"  

for /f "tokens=1,2* delims=^|" %%f IN ("%raw_sms%") DO @(  
	set number=%%f & set number=!number: =!
	set text=%%g
	set sms_1=!text:~1,160!
	set sms_2=!text:~160!
	echo Sende SMS 1 an !number!
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!"  
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt"  

	if "!sms_2!" neq "" (  
		echo Sende SMS 2 an !number!
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!"  
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt"  

	)

)

Der Befehl zum versenden ist noch nicht scharf geschaltet sondern mit einem Echo versehen damit du sehen kannst wie die Sendebefehle dann endgültig aussehen würden.

Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
kunzibus
kunzibus 16.07.2013 aktualisiert um 13:01:40 Uhr
Goto Top
Hi Uwe

Vielen vielen Dank für dein Script. Leider hat es irgendwo noch einen kleinen Bug. Den es zeigt nur folgendes an


Sende SMS an +436648352533
"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Numme
r +4366483521234 -Message "01.07.2013"

Sende SMS an +436648352533
"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Numme
r +436648351234 -Message "Tombola"

Ende


Wo wurde hier der rest unterschlagen.

Wäre es möglich in dem gesendet Ordner nicht nur das Textfile hinzuverschieben sondern eine art Quasi postausgang zu generieren. Also das die textfiles abgelegt werden handynummer+datum+uhrzeit_sms1.txt (damit sie uniqe bleiben) und in der datei der text.

Vielen Dank nochmals im voraus.

mfg

kunzibus
colinardo
colinardo 16.07.2013 aktualisiert um 13:13:02 Uhr
Goto Top
Zitat von @kunzibus:
Wo wurde hier der rest unterschlagen.
Fehler von mir hab das abgeändert
Wäre es möglich in dem gesendet Ordner nicht nur das Textfile hinzuverschieben sondern eine art Quasi postausgang zu
generieren. Also das die textfiles abgelegt werden handynummer+datum+uhrzeit_sms1.txt (damit sie uniqe bleiben) und in der datei der text.

@echo off & setlocal ENABLEDELAYEDEXPANSION
set "file=sms.txt"  
set /p raw_sms=<%file%
if not exist "%~dp0gesendet" md "%~dp0gesendet"  

for /f "tokens=1,2* delims=^|" %%f IN ("%raw_sms%") DO @(  
	set number=%%f & set number=!number: =!
	set text=%%g
	set sms_1=!text:~1,160!
	set sms_2=!text:~160!
	echo Sende SMS 1 an !number!
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!"  
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt"  

	if "!sms_2!" neq "" (  
		echo Sende SMS 2 an !number!
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!"  
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt"  

	)

)
kunzibus
kunzibus 16.07.2013 um 13:18:33 Uhr
Goto Top
Wahnsinn wie schnell das hier ging. Vielen vielen dank. Ich hätte das nie zusammen gebracht. Danke nochmals.

Schöne Grüße aus Österreich
colinardo
colinardo 16.07.2013 um 13:21:42 Uhr
Goto Top
Zitat von @kunzibus:
Keine Ursache, gern geschehen.
p.s. in den Bergen wäre ich jetzt auch lieber zum Gleitschirmfliegen face-wink

Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
kunzibus
kunzibus 16.07.2013 um 13:41:39 Uhr
Goto Top
Verdammt eine sache wäre noch. Das ERP programm hat jetzt mehrere Zeilen (sms) erstellt. Leider hat die send.cmd nur die erste zeile genommen. Somit sind die anderen SMS nicht versendet worden.

Ist es viel Aufwand das ganze pro Zeile auszuführen. ich kann die send.cmd nur 1 pro minute mit scheduled task ausführen.

Mfg

kunzibus
colinardo
colinardo 16.07.2013 um 13:46:26 Uhr
Goto Top
@echo off & setlocal ENABLEDELAYEDEXPANSION
if not exist "%~dp0gesendet" md "%~dp0gesendet"  

for /f "tokens=1,2* delims=^|" %%f IN ('type sms.txt') DO @(  
	set number=%%f & set number=!number: =!
	set text=%%g
	set sms_1=!text:~1,160!
	set sms_2=!text:~160!
	echo Sende SMS an !number!
	echo "c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!"  
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt"  

	if "!sms_2!" neq "" (  
		echo Sende SMS an !number!
		echo "c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!"  
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt"  

	)

)
kunzibus
kunzibus 16.07.2013 um 14:12:40 Uhr
Goto Top
Nochmals vielen Dank. Funktioniert super
kunzibus
kunzibus 23.07.2013 um 10:40:45 Uhr
Goto Top
Hi Colinardo

Leider habe ich noch ein Problem. Bei manchen Kunden sind / zw. der Vorwahl und der Nummer eingegeben. Leider werde die Sms jetzt nicht versandt.

Wie kann man die Batchdatei dazu bringen die / oder () zu ignorieren.

0664/123456789 | 01.07.2013; 18:30; VA: 12345; Mustermann Max; Mustergasse 12; 1234; Alm; 0123456789;0; 6 Pers: 1Clown, 2 Hunde: V-Control, Tombola ;0664/12345678 ; http://www.linkzurva.at/hugo123.php; geplant ist test ;Bitte mit text ausfüllen


Vielen Dank im voraus
colinardo
colinardo 23.07.2013 aktualisiert um 10:58:39 Uhr
Goto Top
Hi kunzibus,
hiermit werden folgende Zeichen aus der Telefonnummer gefiltert:
( ) / -
Leerzeichen waren ja vorher schon ausgefiltert:
setlocal ENABLEDELAYEDEXPANSION
if not exist "%~dp0gesendet" md "%~dp0gesendet"  

for /f "tokens=1,2* delims=^|" %%f IN ('type sms.txt') DO @(  
	set number=%%f
	set number=!number: =!
	set number=!number:^(=!
	set number=!number:^)=!
	set number=!number:/=!
	set number=!number:-=!

	set text=%%g
	set sms_1=!text:~1,160!
	set sms_2=!text:~160!
	echo Sende SMS an !number!
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!"  
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt"  

	if "!sms_2!" neq "" (  
		echo Sende SMS an !number!
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!"  
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt"  

	)

)

Grüße Uwe
kunzibus
kunzibus 23.07.2013 um 16:06:33 Uhr
Goto Top
Perfekt. Jetzt hab ich nur noch das problem das nun keine Zeilen mehr geschrieben werden. Sondern pro SMS eine eigene Datei in Form von smsxxxxx.txt erzeugt wird. (als sms5stelligenummer.txt)

Mithilfe des * hier lest er die dateien nun ein,

for /f "tokens=1,2* delims=^|" %%f IN ('type *.txt') DO @(

Wie kann ich jetzt nur die eine gerade eingelesene Datei löschen. Mit del c:\cmdsms\senden\*.txt räumt er mir ja alles aus,

Danke im voraus. Ich denke jetzt habe ich es dann wirklich.


Mfg


kunzibus
colinardo
colinardo 23.07.2013, aktualisiert am 24.07.2013 um 00:21:37 Uhr
Goto Top
@echo off & setlocal ENABLEDELAYEDEXPANSION
if not exist "%~dp0gesendet" md "%~dp0gesendet"  
set "sendeordner=%~dp0"  
for /f "tokens=* delims=" %%m IN ('dir /b /A-D "!sendeordner!sms*.txt"') DO @(  
for /f "usebackq tokens=1,2* delims=^|" %%f IN ("!sendeordner!%%m") DO @(  
	set number=%%f
	set number=!number: =!
	set number=!number:^(=!
	set number=!number:^)=!
	set number=!number:/=!
	set number=!number:-=!

	set text=%%g
	set sms_1=!text:~1,160!
	set sms_2=!text:~160!
	echo Sende SMS an !number!
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!"  
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt"  

	if "!sms_2!" neq "" (  
		echo Sende SMS an !number!
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!"  
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt"  

	)

)
del /q "!sendeordner!%%m"  
)
kunzibus
kunzibus 23.07.2013 um 20:28:18 Uhr
Goto Top
Sorry aber irgendwie geht mit der Datei jetzt nix mehr. Er zeigt mir folgendes an.

C:\Users\administrator.VITA>C:\cmdsms\senden\send.cmd

C:\Users\administrator.VITA>setlocal ENABLEDELAYEDEXPANSION

C:\Users\administrator.VITA>if not exist "C:\cmdsms\senden\gesendet" md "C:\
cmdsms\senden\gesendet"

C:\Users\administrator.VITA>set "sendeordner=C:\cmdsms\senden\senden"

C:\Users\administrator.VITA>for /F "tokens=* delims=" %m IN ('dir /b /A-D "!
sendeordner!\sms*.txt"') DO @(
for /F "usebackq tokens=1,2* delims=^|" %f IN ("!sendeordner!\%m") DO @(
set number=%f
set number=!number: =!
set number=!numberface-sad=!
set number=!numberface-smile=!
set number=!number:/=!
set number=!number:-=!
set text=%g
set sms_1=!text:~1,160!
set sms_2=!text:~160!
echo Sende SMS an !number!
"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Numm
er !number! -Message "!sms_1!"
echo !sms_1! 1>"C:\cmdsms\senden\gesendet\!number!_23.07.2013202554_sms1.txt"

if "!sms_2!" NEQ "" (
echo Sende SMS an !number!
"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Numm
er !number! -Message "!sms_2!"
echo !sms_2! 1>"C:\cmdsms\senden\gesendet\!number!_23.07.2013202554_sms2.txt"

)
)
del /q "!sendeordner!\%m"
)
Das System kann die angegebene Datei nicht finden.

C:\Users\administrator.VITA>

Danke für die hilfe
colinardo
colinardo 24.07.2013 aktualisiert um 08:04:57 Uhr
Goto Top
Sorry, da hatte mich deine Pfadangabe mit del ... irritiert.
Also die smsXXXXX.txt liegen dann am selben Ort wie die Batchdatei sehe ich das richtig ?
Habe es oben (in meinem letzten Kommentar) korrigiert ...
Bin Heute nur mit Smartphone unterwegs und kann's nicht testen, sollte jetzt aber so funktionieren.

Grüße Uwe