2016-08-08 34 views
1

Ich habe erfolgreich eine Nachricht aus einer Batch-Datei mit this method given by boflynn für eine vorherige Frage angezeigt.Batchdatei-Meldungsfeld: Wagenrücklauf im Nachrichtentext

Ich versuche, einen Wagenrücklauf in den Nachrichtentext Text einfügen, aber alle meine Versuche und Kombinationen von Anführungszeichen und Char (13) sind bisher fehlgeschlagen.

Mit Bezug auf die oben verlinkten Antwort, ich suche eine entsprechende Nachricht, der Text in mehreren Zeilen setzen würde, wie zum Beispiel:

This will 
be shown 
in a popup

Ist das möglich?

+1

Hallo. Kannst du uns zeigen, was du schon versucht hast? –

+0

Nicht VBA, aber das ist bisher duplex - [Anzeige eines zweireihigen Nachrichten-Popups vba 6] (http://stackoverflow.com/a/5005241/692942). Der Code ist identisch, aber wie ich schon sagte, es ist VBA nicht VBScript. – Lankymart

+1

Es ist nur String-Verkettung, der Grund, dass 'Char (13)' nicht funktionierte, liegt daran, dass die Funktion 'Chr()' heißt, also hätte 'Chr (13)' funktioniert. Übrigens decken die [eingebauten benannten Konstanten] (https://msdn.microsoft.com/en-us/library/hh277t8e (v = vs.84) .aspx) bereits die verschiedenen Szenarien ab, die es Wert sind, sie zu verwenden - "vbCr" ist 'Chr (13)', 'vbLf' ist' Chr (10) ',' vbCrLf' ist 'Chr (13) & Chr (10)' und 'vbNewLine' ein Platform-spezifisches Newline-Zeichen; was auch immer für die Plattform geeignet ist. – Lankymart

Antwort

1

VBScript verfügt über ein builtin constantvbCr für das Carriage Return-Zeichen. Verketten Ihre (Teil-) Strings mit dieser konstant und mit dem Ergebnis, das Meldungsfeld angezeigt:

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

mehrzeiligen Text aus einer Batch-Datei anzuzeigen, müssen Sie

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

jede Zeile als separates Argument übergeben und verketten die Argumente

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 schlagen auch vor, wie Sie eine bestimmte Schaltfläche wie Ja oder Nein in der Message Box mit 2 markiert Tasten drücken und dann automatisch drücken (mit Wagenrücklauf?). – sambul35

+2

@ sambul35 Bitte machen Sie [legwork] (https://msdn.microsoft.com/en-us/library/sfw6660x) selbst. SO ist kein Ort, an dem andere Menschen Code schreiben, der auf Ihre Anforderungen zugeschnitten ist. –

+0

Ich würde lieber "VbCrLf" hier als eine Wagenrücklauf (CR) und Zeilenvorschub (LF) Sequenz ist die Standard-Windows-End-of-Line-Marker (obwohl das OP CR gefragt) ... – aschipfl

0

Sie können diese Probe Beispiel versuchen, die MsgBox aus einer Funktion aufzurufen:

@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 
::**********************************************************