Передача параметров нескольких строк и одной строки в bat-файл MS DOS
Я пытаюсь отправить смс используя библиотеку смс gnokii ( http://gnokii.org/) с vb .net, я создал отдельный файл bat и вызываю этот файл bat из моего кода vb.net
это мой код 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
это мой файл летучей мыши
@echo off
echo Begin Transaction
echo "message body" | c:\sms\gnokii.exe --sendsms 0771234567 'this is mobile no
pause
Моя проблема заключается в том, что я хочу передать два параметра в тело сообщения и на мобильное устройство без жесткого кода их
Тело сообщения состояло из пробелов и мультилиней, а мобильный - без единой строки без пробелов
Как я могу достичь в файле Bat
пожалуйста помоги
1 ответ
Сначала вы должны проверить, если 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
Чтобы использовать это с параметрами, как в вашем комментарии, вам нужно отформатировать сообщение в 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"