我有以下代码..如果我使用静态strInputPath3代码工作正常,但如果我使用strInputPath3代码错误输出错误无效的过程调用或参数..有人请告诉我我在做错了什么
strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css"
strInputPath3 = "C:\test\css\main.css"
Set txsInput1 = FSO.OpenTextFile(strInputPath1, 1)
Run Code Online (Sandbox Code Playgroud)
如果您将VBScript可用作字符串的内容提供给.OpenTextFile,则该方法将尝试打开文件并可能抛出"找不到文件"错误.
>> strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css"
>> WScript.Echo strInputPath1
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
C:\test\css\main.css
Error Number: 76
Error Description: Path not found
Run Code Online (Sandbox Code Playgroud)
要获得"无效的过程调用"错误,您必须传递一些险恶的东西,例如空值:
>> strInputPath1 = Empty
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
Error Number: 5
Error Description: Invalid procedure call or argument
Run Code Online (Sandbox Code Playgroud)
这些事实使你极有可能
使用"Option Explicit"启动脚本可以降低此类错误的风险.
添加了wrt"得到了fso命名错误"评论:
由于VBScript的错误消息通常难以理解/理解,这可能是一个很好的机会来反思"可能出现什么问题?VBScript会告诉我什么问题?我该怎么做才能解决错误?我怎么能避免它在将来?"
在goFS中给出一个字符串的第一个参数和一个拼写错误(=>空变量):
>> strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css"
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number: 424
Error Description: Object required
Run Code Online (Sandbox Code Playgroud)
有理由:试图在没有点左边的对象的情况下调用方法(.操作符)是禁忌.
让我们将邪恶的goSF设置为一个对象:
>> Set goSF = New RegExp
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number: 438
Error Description: Object doesn't support this property or method
Run Code Online (Sandbox Code Playgroud)
仍然没有"无效的过程调用或参数"错误.由于goSF现在是一个RegExp,让我们忽略特定的方法(名称) - OpenTextFile() - 并看看如果我们弄乱了调用会发生什么:
>> WScript.Echo TypeName(goSF)
>> Set ms = goSF.Execute()
>>
IRegExp2
Error Number: 450
Error Description: Wrong number of arguments or invalid property assignment
>> Set ms = goSF.Execute(Null)
>>
Error Number: 13
Error Description: Type mismatch
Run Code Online (Sandbox Code Playgroud)
所以我的主张仍然存在.错误"无效的过程调用或参数"是由将Empty提供给在有效FSO上调用的方法.OpenTextFile()引起的.