2010-03-09 141 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() –