2010-03-09 5 views
0

Je suis un débutant à l'écriture de scripts VBS. Merci pour tous vos commentaires! J'ai corrigé l'erreur 800A0401 maintenant, grâce à vos aides. Mais maintenant je reçois l'erreur 800A0414 sur la ligne 13, caractère 1 "Objet requis", qui fait référence à la ligne: Set MimeTypesToAddArray = Array (". Manifest", "application/manifeste", ".xaml", _VBS Fin prévue de l'instruction

Maintenant, je comprends comment fonctionne le comptage des lignes, il compte les lignes de commentaires Je revois toujours toutes vos suggestions, mais si vous avez des conseils sur la façon dont je peux corriger cette erreur maintenant ce serait super! pas d'accord sur les besoin de mettre « Dim » sur une ligne séparée des valeurs de type parce que je l'ai vu tant d'exemples de le faire. Est-ce que des experts 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 

Répondre

6

Je ne pense pas que vous pouvez Dim une variable et écrivez-le sur la même ligne.

Essayez ces lignes comme séparées:

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

Je suis assez sûr u peut. Voir le site Web: http://msdn.microsoft.com/en-us/library/ms752346.aspx. Lorsque j'ai essayé de mettre Dim sur une ligne séparée, j'ai reçu une erreur d'identifiant attendu sur la ligne 6, caractère 5. Ce qui répond à ma question sur le comptage des lignes; Les lignes commentées sont comptées. – salvationishere

+0

@salvationishere: notez que dans cet exemple, la variable 'MimeTypesToAddArray' est définie à la ligne 6, puis une valeur est affectée à la ligne 10 ... (et oui, les lignes de commentaires et les lignes vides comptent) – Shog9

+0

Lorsque j'ai mis à jour votre code avec mon changement, je n'ai plus l'erreur que vous avez signalé. J'en ai obtenu un autre que j'ai pu corriger en enlevant la parenthèse de cette ligne: MimeMapObj.PutEx (ADS_PROPERTY_UPDATE, "MimeMap", MimeMapArray) –

1

Je ne suis pas familier avec VBS juste VB6 mais je crois que l'erreur est que vous faites un DIM et une une mission sur la même ligne. VB6 ne l'autorisait pas, donc je suppose que VBS non plus. Alors peut-être que quelque chose comme ça est ce que vous voulez. En outre, il semble que cela compte des lignes vides et des commentaires.

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

Oui, c'est le problème. Difficile à retenir pour ceux d'entre nous habitués à C ... Encore pire une fois que vous lancez VB.NET (ce qui * l'autorise *) dans le mix. – Shog9

+0

p.s. Si vous faites plus de VBS, regardez le téléchargement d'un éditeur différent, tel que Notepad ++ (http://notepad-plus.sourceforge.net/uk/site.htm). Il vous donnera la coloration syntaxique et affichera les numéros de ligne et de colonne. –

+0

Excellent commentaire, programmeur empirique! Cela a corrigé cette erreur. Je ne fais que googler cette prochaine erreur à moins que vous n'arriviez à connaître la réponse de votre tête. Maintenant, je reçois 800A01B6 sur la ligne 54, caractère 5. Ceci est la ligne: MimeMapArray (i) = CreateObject ("MimeMap") – salvationishere

1

Si vous allez combiner une déclaration Dim avec une mission sur la même ligne, vous devez le faire comme ceci:

Dim MimeTypesToAddArray : MimeTypesToAddArray = Array() 
+0

Merci pour le conseil, Mark! Savez-vous cependant à propos de la nouvelle erreur? (voir la question mise à jour) – salvationishere

+0

Je crois que le problème est que vous n'avez pas besoin de "définir" lors de l'attribution du tableau à MimeTypesToAddArray. Just MimeTypesToAddArray = Array() –