2017-04-16 81 views
0

我在将VBScript添加到Batch文件时遇到问题。 我尝试这样做:如何从批处理编写VBScript?

@echo off 
echo MsgBox("Hello") 
echo Do 
echo MsgBox("Hello") 
echo Loop >>msg2.vbs 
start msg2.vbs 

但它给了我,我用Loop没有Do错误。 我在做什么错?

+1

没有必要使用临时的vbs文件。您可以直接在批处理脚本中嵌入并执行vbs代码。看看http://stackoverflow.com/q/9074476/1012053 – dbenham

+1

可能重复的[是否可以在批处理文件中嵌入和执行VBScript而不使用临时文件?](http://stackoverflow.com/问题/ 9074476/is-it-it-it-it-it-emb-and-execute-vbscript-a-batch-file-without-using-a) – Lankymart

+0

@dbenham仅仅因为你*可以*将尖锐和尖锐的物体插入你的身体并不意味着你*应该*。 –

回答

0

你的批处理脚本实际上只追加回路msg2.vbs每次运行文件..

你都应该“VBS”追加行从您的批处理文件是这样的:

@echo off 
echo msgBox("Hello") > msg2.vbs :: > creates file if not exists with: msgBox("Hello") 
echo do >> msg2.vbs    :: >> appends line with: do 
echo msgBox("Hello") >> msg2.vbs :: >> appends line with: msgBox("Hello") 
echo loop >> msg2.vbs    :: >> appends line with: loop 
start msg2.vbs 
+0

YAY非常感谢你非常感谢你 –

1

您的批处理文件不会奇迹般地知道你想在VBScript中使用哪一行。无论是重定向每个echo输出(如agriffaut建议),或在运行命令块的echo语句和重定向模块的整个输出(这样你就不必反复追加):

(
    echo MsgBox("Hello"^) 
    echo Do 
    echo MsgBox("Hello"^) 
    echo Loop 
)>msg2.vbs 

注对于后者,您需要避免关闭块内的括号。在这种特殊情况下,你可以只删除它们完全,但:

(
    echo MsgBox "Hello" 
    echo Do 
    echo MsgBox "Hello" 
    echo Loop 
)>msg2.vbs 

另一种选择是使用单一echo声明和逃避的换行符:

>msg2.vbs echo MsgBox "Hello"^ 

Do^ 

MsgBox "Hello"^ 

Loop 

注意,空行,这里需要。

+0

oooh谢谢你 –