2

vb .netでgnokii SMSライブラリ(http://gnokii.org/)を使用してSMSを送信しようとすると、別の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

私の問題は、メッセージ本文とモバイル no に 2 つのパラメーターをハードコーディングせずに渡したいことです。

メッセージ本文はスペースと複数行で構成され、モバイルはスペースなしの単一行のみで cosistend なし

バットファイルで達成するにはどうすればよいですか

助けてください

4

1 に答える 1

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 を使用する必要があります。
パーセント展開で使用するソリューションもありますが、それははるかに複雑です。
dos-batch newline variable hack の仕組みを説明する

これをコメントのようなパラメーターで使用するには、VB でメッセージをフォーマットする必要があります。

したがって、次のようなテキストを送信する場合

こんにちは、これは 3 行
のテキストです

バッチに送信する必要があります

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

これが機能しない場合の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"
于 2013-12-17T08:37:45.573 に答える