下标超出误差范围800A0009

时间:2017-03-03 12:51:34

标签: vbscript

我用XP将计算机更改为w10,使用win WP的脚本使用W10给出了“下标超出范围”的错误。它在“Set f = fso.GetFolder(objArgs(0))”行中给出了这个错误。

然后我复制脚本:

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

1 个答案:

答案 0 :(得分:0)

如果您有&#34;下标超出范围&#34;使用objArgs(0)时出错,这只是因为objArgs不包含任何内容。它与操作系统无关。这可能是因为您没有将所需的参数传递给您的脚本。检查缺少的参数并报告错误是一种很好的做法。您可以在代码中添加类似的内容:

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

要解决您的问题,请查看您如何调用脚本。它应该是这样的:

cscript scriptfilename.vbs foldername

您可能目前缺少foldername参数。