我尝试使用gnokii sms库(http://gnokii.org/)和vb .net发送短信,我创建了一个单独的bat文件并从我的vb.net代码调用该bat文件
这是我的vb代码
Dim process As New System.Diagnostics.Process
Dim startInfo As New ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory & "sms.bat")
process.StartInfo = startInfo
process.StartInfo.Arguments = txtBody.Text'text typed in text box
这是我的bat文件
@echo off
echo Begin Transaction
echo "message body" | c:\sms\gnokii.exe --sendsms 0771234567 'this is mobile no
pause
我的问题是我想将两个参数传递给邮件正文和移动版没有硬编码
消息体由空格和多线组成,移动没有cosistend只有单行没有空格
我怎样才能在bat文件中实现
请帮助
答案 0 :(得分:2)
首先,如果gnokii.exe
通过管道接受多行文本,则应测试
只需创建一个多行文本文件并使用
type mySMS.txt | c:\sms\gnokii.exe --sendsms 0771234567
如果这样做,也应该可以从批处理文件中发送它并在文本中添加换行符。
@echo off
setlocal EnableDelayedExpansion
set LF=^
rem ** The two empty lines are required **
echo Begin Transaction
echo Line1!LF!Line2 | c:\sms\gnokii.exe --sendsms 0771234567 'this is mobile no
使用换行符时应使用EnableDelayedExpansion 还存在使用百分比扩展的解决方案,但这要复杂得多 Explain how dos-batch newline variable hack works
要在评论中使用此参数,您需要在VB中格式化消息。
所以当你想发送像
这样的文字时您好
这是一篇文章 有三行
您需要发送到批次
process.StartInfo.Arguments = "Hello!LF!this is a text!LF!with three lines"
您的批次应该看起来像
setlocal EnableDelayedExpansion
set LF=^
set "text=%~1"
echo !text! | c:\sms\gnokii.exe --sendsms %2
第二种解决方案,如果不起作用。
创建临时文件并使用重定向
setlocal EnableDelayedExpansion
set LF=^
set "text=%~1"
echo !text! > "%TMP%\sms.txt"
c:\sms\gnokii.exe --sendsms %2 < "%TMP%\sms.txt"
del "%TMP%\sms.txt"