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

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

Frage Entwicklung Batch & Shell

Mitglied: kunzibus

kunzibus (Level 1) - Jetzt verbinden

16.07.2013 um 10:38 Uhr, 2779 Aufrufe, 14 Kommentare, 3 Danke

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.


Mit freundlichen Grüßen

kunzibus




Download smscmd
http://www.softpedia.com/get/Internet/Telephony-SMS-GSM/SMSCMD.shtml
Mitglied: colinardo
16.07.2013, aktualisiert um 13:14 Uhr
Hallo kunzibus,
könnte z.B. so aussehen:
(Script in den Ordner kopieren wo die sms.txt liegt..)
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set "file=sms.txt" 
03.
set /p raw_sms=<%file% 
04.
if not exist "%~dp0gesendet" md "%~dp0gesendet" 
05.
 
06.
for /f "tokens=1,2* delims=^|" %%f IN ("%raw_sms%") DO @( 
07.
	set number=%%f & set number=!number: =! 
08.
	set text=%%g 
09.
	set sms_1=!text:~1,160! 
10.
	set sms_2=!text:~160! 
11.
	echo Sende SMS 1 an !number! 
12.
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!" 
13.
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt" 
14.
 
15.
	if "!sms_2!" neq "" ( 
16.
		echo Sende SMS 2 an !number! 
17.
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!" 
18.
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt" 
19.
 
20.
21.
 
22.
)
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
Bitte warten ..
Mitglied: kunzibus
16.07.2013, aktualisiert um 13:01 Uhr
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.

Mit freundlichen Grüßen

kunzibus
Bitte warten ..
Mitglied: colinardo
16.07.2013, aktualisiert um 13:13 Uhr
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.

01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set "file=sms.txt" 
03.
set /p raw_sms=<%file% 
04.
if not exist "%~dp0gesendet" md "%~dp0gesendet" 
05.
 
06.
for /f "tokens=1,2* delims=^|" %%f IN ("%raw_sms%") DO @( 
07.
	set number=%%f & set number=!number: =! 
08.
	set text=%%g 
09.
	set sms_1=!text:~1,160! 
10.
	set sms_2=!text:~160! 
11.
	echo Sende SMS 1 an !number! 
12.
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!" 
13.
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt" 
14.
 
15.
	if "!sms_2!" neq "" ( 
16.
		echo Sende SMS 2 an !number! 
17.
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!" 
18.
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt" 
19.
 
20.
21.
 
22.
)
Bitte warten ..
Mitglied: kunzibus
16.07.2013 um 13:18 Uhr
Wahnsinn wie schnell das hier ging. Vielen vielen dank. Ich hätte das nie zusammen gebracht. Danke nochmals.

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

Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Bitte warten ..
Mitglied: kunzibus
16.07.2013 um 13:41 Uhr
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.

Mit freundlichen Grüßen

kunzibus
Bitte warten ..
Mitglied: colinardo
16.07.2013 um 13:46 Uhr
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
if not exist "%~dp0gesendet" md "%~dp0gesendet" 
03.
 
04.
for /f "tokens=1,2* delims=^|" %%f IN ('type sms.txt') DO @( 
05.
	set number=%%f & set number=!number: =! 
06.
	set text=%%g 
07.
	set sms_1=!text:~1,160! 
08.
	set sms_2=!text:~160! 
09.
	echo Sende SMS an !number! 
10.
	echo "c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!" 
11.
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt" 
12.
 
13.
	if "!sms_2!" neq "" ( 
14.
		echo Sende SMS an !number! 
15.
		echo "c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!" 
16.
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt" 
17.
 
18.
19.
 
20.
)
Bitte warten ..
Mitglied: kunzibus
16.07.2013 um 14:12 Uhr
Nochmals vielen Dank. Funktioniert super
Bitte warten ..
Mitglied: kunzibus
23.07.2013 um 10:40 Uhr
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
Bitte warten ..
Mitglied: colinardo
23.07.2013, aktualisiert um 10:58 Uhr
Hi kunzibus,
hiermit werden folgende Zeichen aus der Telefonnummer gefiltert:
( ) / -
Leerzeichen waren ja vorher schon ausgefiltert:
01.
setlocal ENABLEDELAYEDEXPANSION 
02.
if not exist "%~dp0gesendet" md "%~dp0gesendet" 
03.
 
04.
for /f "tokens=1,2* delims=^|" %%f IN ('type sms.txt') DO @( 
05.
	set number=%%f 
06.
	set number=!number: =! 
07.
	set number=!number:^(=! 
08.
	set number=!number:^)=! 
09.
	set number=!number:/=! 
10.
	set number=!number:-=! 
11.
 
12.
	set text=%%g 
13.
	set sms_1=!text:~1,160! 
14.
	set sms_2=!text:~160! 
15.
	echo Sende SMS an !number! 
16.
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!" 
17.
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt" 
18.
 
19.
	if "!sms_2!" neq "" ( 
20.
		echo Sende SMS an !number! 
21.
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!" 
22.
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt" 
23.
 
24.
25.
 
26.
)
Grüße Uwe
Bitte warten ..
Mitglied: kunzibus
23.07.2013 um 16:06 Uhr
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.


Mit freundlichen Grüßen


kunzibus
Bitte warten ..
Mitglied: colinardo
23.07.2013, aktualisiert 24.07.2013
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
if not exist "%~dp0gesendet" md "%~dp0gesendet" 
03.
set "sendeordner=%~dp0" 
04.
for /f "tokens=* delims=" %%m IN ('dir /b /A-D "!sendeordner!sms*.txt"') DO @( 
05.
for /f "usebackq tokens=1,2* delims=^|" %%f IN ("!sendeordner!%%m") DO @( 
06.
	set number=%%f 
07.
	set number=!number: =! 
08.
	set number=!number:^(=! 
09.
	set number=!number:^)=! 
10.
	set number=!number:/=! 
11.
	set number=!number:-=! 
12.
 
13.
	set text=%%g 
14.
	set sms_1=!text:~1,160! 
15.
	set sms_2=!text:~160! 
16.
	echo Sende SMS an !number! 
17.
	"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_1!" 
18.
	echo !sms_1! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms1.txt" 
19.
 
20.
	if "!sms_2!" neq "" ( 
21.
		echo Sende SMS an !number! 
22.
		"c:\cmdsms\cmdsms.exe" -Comport COM3 -Baudrate 9600 -SMSSC +4365009000000 -Nummer !number! -Message "!sms_2!" 
23.
		echo !sms_2! >"%~dp0gesendet\!number!_%date%%time:~0,2%%time:~3,2%%time:~6,2%_sms2.txt" 
24.
 
25.
26.
 
27.
28.
del /q "!sendeordner!%%m" 
29.
)
Bitte warten ..
Mitglied: kunzibus
23.07.2013 um 20:28 Uhr
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=!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 -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
Bitte warten ..
Mitglied: colinardo
24.07.2013, aktualisiert um 08:04 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
Per Batch ab einer bestimmten Stelle in einer .txt auslesen (1)

Frage von PeterPann zum Thema Batch & Shell ...

Batch & Shell
Text-Datei auslesen und Inhalt als Parameter übergeben (1)

Frage von aubm2013 zum Thema Batch & Shell ...

Batch & Shell
CMD-Batch hilfe: Dateiname zu txt (2)

Frage von Syscore64 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...