2017-04-16 85 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謝謝你 –