2010-03-09 140 views
0

我是VBS腳本的新手。謝謝你們的評論!我現在修復了錯誤800A0401,這要感謝您的幫助。但現在我在第13行出現錯誤800A0414,字符1「Object required」,它是指行: Set MimeTypesToAddArray = Array(「。manifest」,「application/manifest」,「.xaml」,_VBS預期結束語句

現在我明白了線條計算是如何工作的,它可以計算註釋行數,但我仍在審查所有建議,但是如果您有任何提示,我該如何解決這個錯誤,現在可以超級了!不同意將類型值放在單獨的行上,因爲我已經看到了很多這樣做的例子。是否有任何VBS專家?0

' This script adds the necessary Windows Presentation Foundation MIME types 
' to an IIS Server. 
' To use this script, just double-click or execute it from a command line. 
' Running this script multiple times results in multiple entries in the IIS MimeMap. 
' Set the MIME types to be added 
Dim MimeMapObj 
Dim MimeMapArray 
Dim WshShell 
Dim oExec 
Const ADS_PROPERTY_UPDATE = 2 

Dim MimeTypesToAddArray 
Set MimeTypesToAddArray = Array(".manifest", "application/manifest", ".xaml", _ 
    "application/xaml+xml", ".application", "application/x-ms-application", _ 
    ".deploy", "application/octet-stream", ".xbap", "application/x-ms-xbap", _ 
    ".xps", "application/vnd.ms-xpsdocument") 

' Get the mimemap object 
Set MimeMapObj = GetObject("IIS://LocalHost/MimeMap") 

' Call AddMimeType for every pair of extension/MIME type 
For counter = 0 to UBound(MimeTypesToAddArray) Step 2 
    AddMimeType MimeTypesToAddArray(counter), MimeTypesToAddArray(counter+1) 
Next 

' Create a Shell object 
Set WshShell = CreateObject("WScript.Shell") 

' Stop and Start the IIS Service 
Set oExec = WshShell.Exec("net stop w3svc") 
Do While oExec.Status = 0 
    WScript.Sleep 100 
Loop 

Set oExec = WshShell.Exec("net start w3svc") 
Do While oExec.Status = 0 
    WScript.Sleep 100 
Loop 

Set oExec = Nothing 

' Report status to user 
WScript.Echo "Windows Presentation Foundation MIME types have been registered." 

' AddMimeType Sub 
Sub AddMimeType(ByVal Ext, ByVal MType) 

    ' Get the mappings from the MimeMap property. 
    MimeMapArray = MimeMapObj.GetEx("MimeMap") 

    ' Add a new mapping. 
    i = UBound(MimeMapArray) + 1 
    ReDim Preserve MimeMapArray(i) 
    MimeMapArray(i) = CreateObject("MimeMap") 
    MimeMapArray(i).Extension = Ext 
    MimeMapArray(i).MimeType = MType 
    MimeMapObj.PutEx ADS_PROPERTY_UPDATE, "MimeMap", MimeMapArray 
    MimeMapObj.SetInfo() 

End Sub 

回答

6

我不認爲你可以調暗一個變量並在同一行寫入它。

這些嘗試以單獨的線:

Dim MimeTypesToAddArray 
MimeTypesToAddArray = Array(".manifest", "application/manifest", ".xaml", _ 
    "application/xaml+xml", ".application", "application/x-ms-application", _ 
    ".deploy", "application/octet-stream", ".xbap", "application/x-ms-xbap", _ 
    ".xps", "application/vnd.ms-xpsdocument") 
+0

我敢肯定,U可以。請參閱網站:http://msdn.microsoft.com/en-us/library/ms752346.aspx。 當我試圖將Dim放在單獨的行上時,我在第6行中得到了預期的標識符錯誤,字符爲5。註釋行數被計數。 – salvationishere

+0

@salvationishere:請注意,在該示例中,變量MimeTypesToAddArray正在第6行中定義,然後在第10行中分配了一個值...(並且是,註釋行和空行都計數) – Shog9

+0

當我更新代碼時與我的變化我不再有你報告的錯誤。我確實得到了另一個,但我可以通過從這一行刪除括號修復:MimeMapObj.PutEx(ADS_PROPERTY_UPDATE,「MimeMap」,MimeMapArray) –

1

我不熟悉的VBS只是VB6,但我認爲錯誤是,你正在做一個朦朧而在同一行的一個任務。 VB6不允許這樣,所以我認爲VBS也不會。所以也許這樣的事情就是你想要的。此外,它看起來像它計算空白行和評論。

Dim MimeTypesToAddArray 
MimeTypesToAddArray = Array(".manifest", "application/manifest", ".xaml", _ 
    "application/xaml+xml", ".application", "application/x-ms-application", _ 
    ".deploy", "application/octet-stream", ".xbap", "application/x-ms-xbap", _ 
    ".xps", "application/vnd.ms-xpsdocument") 
+0

是的,這是問題所在。很難記住,對於我們這些習慣於C的人...更糟糕的是,一旦你將VB.NET(它確實允許它)投入混合。 – Shog9

+0

p.s.如果你正在做更多的VBS看看下載一個不同的編輯器,如Notepad ++(http://notepad-plus.sourceforge.net/uk/site.htm)。它會給你語法突出顯示並顯示行號和列號。 –

+0

偉大的評論,經驗程序員!這修正了這個錯誤。我只是使用谷歌搜索下一個錯誤,除非你碰巧知道回答你的頭。現在我得到54行54字符800A01B6,這是行:MimeMapArray(i)= CreateObject(「MimeMap」) – salvationishere

1

如果你要一個Dim語句在同一行的任務結合起來,你必須做這樣的:

Dim MimeTypesToAddArray : MimeTypesToAddArray = Array() 
+0

感謝您的建議,馬克!你知道這個新錯誤嗎? (查看更新後的問題) – salvationishere

+0

我認爲問題在於,在將數組分配給MimeTypesToAddArray時,您不需要「設置」。只需MimeTypesToAddArray = Array() –