2013-06-17 2 views
1

Quelqu'un peut-il regarder le script ci-dessous et dites-moi pourquoi il jette cette erreur indice hors de portée erreur dans vbscript ..Dans le fichier texte, il y a deux entrées, il écrit dans le fichier correctement, mais alors il renvoie une erreur en sortant de la boucle de sorte qu'il appelle jamais les autres function..I pensent qu'il essaie de courir 3 fois, mais il y a seulement 2 entrées dans le fichier texteindice hors de portée erreur dans vbscript

The text file is in this format 

    Format.css Shared 
    Design.css Shared 


Dim strInputPath1 
Dim txsInput1,txsOutput 
Dim FSO 
Dim Filename 

Set FSO = CreateObject("Scripting.FileSystemObject") 
strOutputPath = "C:\txt3.txt" 
Set txsOutput = FSO.CreateTextFile(strOutputPath) 

Set re = New RegExp 
re.Pattern = "\s+" 
re.Global = True 

Set f = FSO.OpenTextFile("C:\Users\spadmin\Desktop\Main\combination.txt") 
Do Until f.AtEndOfStream 
    tokens = Split(Trim(re.Replace(f.ReadLine, " "))) 
    extension = Split(tokens(0),".") 
    strInputPath1 = "C:\inetpub\wwwroot\Test\files\" & tokens(1) & "\" & extension(1) & "\" & tokens(0) 
    Set txsInput1 = FSO.OpenTextFile(strInputPath1, 1) 
    WScript.Echo strInputPath1 
    txsOutput.Writeline txsInput1.ReadAll 

Loop 
WScript.Echo "Calling" 

txsInput1.Close 
txsOutput.Close 
f.Close 
Call CreateCSSFile() 


'''''''''''''''''''''''''''''''''''' 
' Merge Css Files 
'''''''''''''''''''''''''''''''''''' 
Sub CreateCSSFile() 
WScript.Echo "Called" 

Dim FilenameCSS 

Dim strInputPathCSS 
Dim txsInputCSS,txsOutputCSS 
Dim FSOCSS 


Set FSOCSS = CreateObject("Scripting.FileSystemObject") 
strOutputPathCSS = "C:\txt4.txt" 
Set txsOutputCSS = FSOCSS.CreateTextFile(strOutputPath) 

Set re = New RegExp 
re.Pattern = "\s+" 
re.Global = True 

Set fCSS = FSOCSS.OpenTextFile("C:\Users\spadmin\Desktop\TestingTheWebService\combination.txt") 
Do Until fCSS.AtEndOfStream 
    tokensCSS = Split(Trim(re.Replace(fCSS.ReadLine, " "))) 
    extensionCSS = Split(tokensCSS(0),".") 
    strInputPathCSS = "C:\inetpub\wwwroot\EpsShared\c\" & tokensCSS(1) & "\" & extensionCSS(1) & "\" & tokensCSS(0) 
    Set txsInputCSS = FSOCSS.OpenTextFile(strInputPathCSS, 1) 
    txsOutputCSS.Writeline txsInputCSS.ReadAll 

Loop 
fCSS.Close 
txsInputCSS.Close 
txsOutputCSS.Close 
Set FSOCSS = Nothing 
End Sub 

Répondre

5

Si votre fichier contient des lignes vides arrière, appliquer Split() peut renvoyer des tableaux avec moins de 2 éléments. Dans ce cas token(1) devrait lancer une erreur «indice hors de portée».

Vous devriez toujours vérifier, si split() workes comme prévu:

tokens = Split(Trim(re.Replace(f.ReadLine, " "))) 
If 1 = UBound(tokens) Then 
    extension = Split(tokens(0),".") 
    If 1 = UBound(extension) Then 
     strInputPath1 = "..." & tokens(1) & "..." 
    Else 
     ... parse error ... 
    End If 
Else 
    ... parse error or just trailing blank lines? ... 
End If 
+0

Ce worked..U r si vite à répondre et la dernière fois aussi u aidé me..Thank U très – user505210

+1

En fonction des besoins réels, vous pouvez également vous assurer qu'il y a toujours au moins * n * jetons en ajoutant des caractères délimiteurs * n-1 *, par exemple: 'Split (str &" .. ",". ")' Divisera 'str' en 3 jetons ou plus. –

Questions connexes