2010-03-09 6 views
0

Я новичок в VBS-скриптах. Спасибо за все ваши комментарии! Я исправил ошибку 800A0401 сейчас, благодаря вашим услугам. Но теперь я получаю ошибку 800A0414 в строке 13, символ 1 «Требуемый объект», который относится к строке: Set MimeTypesToAddArray = Array (". Manifest", "application/manifest", ".xaml", _Ожидаемый конец заявления VBS

Теперь я понимаю, как работает подсчет строк, он подсчитывает строки комментариев. Я все еще просматриваю все ваши предложения, но если у вас есть какие-либо советы о том, как я могу исправить эту ошибку сейчас, это было бы супер!

(I do не согласен о необходимости поставить «Dim» на отдельной строке от значений типа, потому что я видел так много примеров делать это. Кто-нибудь из U 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

Я уверен, что у может. См. Веб-сайт: 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, но я считаю, что ошибка в том, что вы делаете DIM и назначение на одной и той же линии. 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

Отличный комментарий, эмпирический программист! Это исправило эту ошибку. Я просто искал эту следующую ошибку, если у вас не было ответа на вопрос. Теперь я получаю 800A01B6 на линии 54, символ 5. Это строка: MimeMapArray (i) = CreateObject («MimeMap») – salvationishere

1

Если вы собираетесь объединить Dim заявление с назначением на той же строке, вы должны сделать это следующим образом:

Dim MimeTypesToAddArray : MimeTypesToAddArray = Array() 
+0

Спасибо за отзыв, Марк! Знаете ли вы, хотя о новой ошибке? (см. обновленный вопрос) – salvationishere

+0

Я считаю, что проблема заключается в том, что вам не нужно «устанавливать» при назначении массива MimeTypesToAddArray. Просто MimeTypesToAddArray = Array() –

Смежные вопросы