2017-03-03 86 views
0

我用XP將計算機更改爲w10,並且與win WP一起使用的腳本給我帶W10的「下標超出範圍」的錯誤。它在「Set f = fso.GetFolder(objArgs(0))」行中給了我這個錯誤。下標超出誤差範圍800A0009

然後我複製腳本:

enter code here 


'**************************************************************** 
'* Script Comprueba si hay archivos, ejecuta proceso y renombra * 
'**************************************************************** 

'*** Declaro variables y creo objetos necesarios *** 

Dim Ejecuta, return 
Set objArgs = WScript.Arguments 
Set WshShell = CreateObject("WScript.Shell") 
Set WshNetwork = CreateObject("WScript.Network") 
Set fso = CreateObject("Scripting.FileSystemObject") 

'*** Bucle de Cambio de nombre 
Set f = fso.GetFolder(objArgs(0)) 
Set fc = f.Files 
For Each f1 in fc 

'*** Tratar los ficheros del directorio 
nounom = "VACIO" 

'*** JCT SI QUIERES TRATAR TODOS LOS FICHEROS DEL DIRECTORIO ELIMINA ESTA      

If Left(UCase(f1.Name),3)= "ORD" Then 

'*** PROCESAR FICHERO LEIDO 
'WScript.Echo "procesar archivo leido" 
command = "%COMSPEC% /k " 

dos_command = "startrfc -3 -d DAP -u edi -p dav543 -c 100 -l ES -h 10.10.20.2 -s 00 -E PATHNAME=\\10.10.53.2\EDI\VOXEL\IN\"+f1.Name+ " -E PORT=DVG -F EDI_DATA_INCOMING -t" 
'MsgBox dos_command 

' Execute command. 
WshShell.Run(command + dos_command) 

'MsgBox "Fichero Procesado " + f1.Name 

'*** nounom es el nombre del nuevo fichero 
nounom = f1.name+".bak" 

'*** ubinounom es la ubicacion y el nombre del nuevo fichero 
ubinounom = "\\10.10.53.2\EDI\VOXEL\IN\"&nounom 

'*** JCT SI QUIERES TRATAT TODOS LOS FICHEROS DEL DIRECTORIO ELIMINA ESTA INSTRUCCION Y LA 'SIGUIENTE 
End If  

'*** Comprobar si existe el fichero de destino, si no existe cambiar de nombre el de origen y 'moverlo a carpeta destino 
If nounom <> "VACIO" and not(fso.FileExists(ubinounom)) Then 
fso.CopyFile "\\daesvpfs01\EDI\voxel\IN\"&f1.Name, "\\daesvpfs01\EDI\voxel\HISTORICO\"&nounom 

End if 

Next 
+0

當您運行vbs文件時,您是否提供命令行參數? –

回答

0

如果你有一個「下標超出範圍」錯誤使用objArgs(0)時,它很簡單,因爲objArgs不包含任何東西。它與操作系統無關。這可能是因爲你沒有將必要的參數傳遞給你的腳本。檢查缺失的參數並報告錯誤是一種很好的做法。你可以在你的代碼中加入類似的東西:

If objArgs.Count = 0 then 
    WScript.echo "Missing argument." 
    WScript.Quit 
End if 

要解決你的問題,看看你如何調用你的腳本。它應該是這樣的:

cscript scriptfilename.vbs foldername 

您可能當前缺少foldername參數。