带有NL的VBScript msgbox

时间:2018-09-18 10:27:55

标签: vbscript

我有以下代码使用两个env变量显示MsgBox

Set wshShell = CreateObject("WScript.Shell")
Title = wshShell.ExpandEnvironmentStrings("%Title%")
Text = wshShell.ExpandEnvironmentStrings("%Text%")
x = MsgBox(Text, 4144, Title)

虽然代码有效,但我希望消息中没有换行符。我已阅读以下内容,讨论了这种情况: How to use \n new line in VB msgbox() ...?

但是,当我将env变量感知到以下变量时,它将按字面显示。

"This is the first line" & vbCrLf & "and this is the second line"

以防万一上面的代码不清楚...

使用以下批处理语句中的值设置环境变量%Title%%Text%

set Title="This is a title"
set Text="This is the first line" & vbCrLf & "and this is the second line"

代码读取并在消息框中显示这些环境变量。

1 个答案:

答案 0 :(得分:1)

扩展的环境字符串仍然是字符串,因此,如果您不告知VBScript,则它不会将其评估为VBScript代码。

x = MsgBox(Eval(Text), 4144, Eval(Title))

但是,Eval is evil应该避免。

更好的方法是使用换行符的占位符(例如\n)来定义环境变量,然后用实际的换行符替换占位符:

x = MsgBox(Replace(Text, "\n", vbNewLine), 4144, Replace(Title, "\n", vbNewLine))