2016-08-08 1 views
1

Я успешно показываю окно сообщения из командного файла, используя this method given by boflynn для предыдущего вопроса.Поле сообщения пакетного файла: возврат каретки в теле сообщения

Я пытаюсь вставить возврат каретки в текст основного текста сообщения, но все мои попытки и комбинации меток кавычек и Char (13) до сих пор не удались.

Со ссылкой на вышеупомянутый связанный ответ, я ищу для messagbox, который положил бы текст на нескольких строках, такие как:

This will 
be shown 
in a popup

Возможно ли это?

+1

Здравствуйте. Можете ли вы показать нам, что вы уже пробовали? –

+0

Не VBA, но это самый близкий до сих пор - [отображает сообщение 2 строки pop-up vba 6] (http://stackoverflow.com/a/5005241/692942). Код идентичен, но, как я уже сказал, это VBA, а не VBScript. – Lankymart

+1

Это просто конкатенация строк, причина 'Char (13)' не срабатывала, потому что функция называется 'Chr()', поэтому 'Chr (13)' работал бы. Кстати, [встроенные именованные константы] (https://msdn.microsoft.com/en-us/library/hh277t8e (v = vs.84) .aspx) уже охватывают различные сценарии, поэтому стоит их использовать - 'vbCr' является 'Chr (13)', 'vbLf' является' Chr (10) ',' vbCrLf' является 'Chr (13) & Chr (10)' и 'vbNewLine' характерной для платформы символа новой строки; что подходит для платформы. – Lankymart

ответ

1

VBScript имеет символ builtin constantvbCr для символа возврата каретки. Соединить свои (суб) строки с этим постоянным и отобразить окно сообщения с результатом:

MsgBox "This will" & vbCr & "be shown" & vbCr & "in a popup" 

Для отображения многострочного текста из пакетного файла, который нужно передать каждую строку как отдельный аргумент

cscript MessageBox.vbs "This will" "be shown" "in a popup" 

и конкатенации аргументы

ReDim args(WScript.Arguments.Count-1) 
For i = 0 To WScript.Arguments.Count-1 
    args(i) = WScript.Arguments(i) 
Next 

MsgBox Join(args, vbCr) 
+0

Pls также предлагает установить определенную кнопку, например Yes или No, выделенную в окне сообщений с помощью 2 и затем автоматически нажмите его (с возвратом каретки?). – sambul35

+2

@ sambul35 Пожалуйста, сделайте несколько [legwork] (https://msdn.microsoft.com/en-us/library/sfw6660x) самостоятельно. SO - это не место, где другие люди пишут код, соответствующий вашим требованиям. –

+0

Я предпочел бы использовать 'vbCrLf' здесь, поскольку последовательность возврата каретки (CR) и строки (LF) является стандартным маркером конца Windows (хотя OP запросил CR) ... – aschipfl

0

Вы можете попробовать этот образец пример для вызова MsgBox из функции:

@echo off 
set "Msg=Hey !\nHere is a message !\nThis will\n be shown\n in popup\n with multi-lines !" 
Rem 64=vbInformation, 48=vbExclamation, 16=vbCritical 32=vbQuestion 
set Type=64 48 16 32 
Set "Title=Example of MsgBox in batch with vbscript" 
For %%a in (%Type%) Do Call:MsgBox "%Msg%" "%%a" "%Title%" 
exit /b 
::********************************************************** 
:MsgBox <Msg> <Type> <Title> 
echo MsgBox Replace("%~1","\n",vbCrLf),"%~2","%~3" > "%tmp%\%~n0.vbs" 
Cscript /nologo "%tmp%\%~n0.vbs" & Del "%tmp%\%~n0.vbs" 
exit /b 
::********************************************************** 
Смежные вопросы