Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取vbscript中的文件时引发错误,过程调用无效或参数错误_Vbscript - Fatal编程技术网

读取vbscript中的文件时引发错误,过程调用无效或参数错误

读取vbscript中的文件时引发错误,过程调用无效或参数错误,vbscript,Vbscript,我有下面的代码..如果我使用静态strInputPath3,代码工作正常,但是如果我使用strInputPath3,代码会出错,并带有一个错误无效的过程调用或参数..有人能告诉我我这里做错了什么吗 strInputPath1 = "C:\test" & "\" & "css" & "\" & "main.css" strInputPath3 = "C:\test\css\main.css" Set txsInput1 = FSO.OpenTextFile(

我有下面的代码..如果我使用静态strInputPath3,代码工作正常,但是如果我使用strInputPath3,代码会出错,并带有一个错误无效的过程调用或参数..有人能告诉我我这里做错了什么吗

strInputPath1 =  "C:\test" & "\" & "css" & "\" & "main.css"

strInputPath3 = "C:\test\css\main.css"


Set txsInput1 = FSO.OpenTextFile(strInputPath1, 1)

如果将VBScript可以用作字符串的内容馈送到.OpenTextFile,则该方法将尝试打开一个文件,并可能抛出“未找到文件”错误

要获得“无效过程调用”错误,必须传递一些不安全的信息,例如空值:

>> strInputPath1 = Empty
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
Error Number:       5
Error Description:  Invalid procedure call or argument
这些事实使你极有可能

  • 在初始化和在.OpenTextFile()中使用变量strInputPath1之间更改了变量strInputPath1的内容
  • 或者初始化变量X并使用变量Y(Y&X可能是“strInputPath1”的变体)
  • 或者在不同的作用域(~Functions/Subs)中初始化并使用两个同名变量
使用“Option Explicit”启动脚本将降低此类错误的风险

添加了wrt“将fso命名为错误”评论:

由于VBScript的错误消息通常很难解释/理解,因此这可能是一个很好的机会来思考“什么可能出错?VBScript会告诉我有关该问题的哪些信息?我应该如何修复错误?将来如何避免?”

在goFS中给定一个严格的第一个参数和一个输入错误(=>空变量):

显而易见:在圆点左侧没有对象的情况下尝试调用方法(.operator)是不可能的

让我们将邪恶的goSF设置为一个对象:

>> Set goSF = New RegExp
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number:       438
Error Description:  Object doesn't support this property or method
仍然没有“无效过程调用或参数”错误。由于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

所以我的主张仍然有效。“无效的过程调用或参数”错误是由于向有效FSO上调用的.OpenTextFile()方法馈送Empty造成的。

如果将VBScript可以用作字符串的内容馈送到.OpenTextFile,该方法将尝试打开一个文件,可能会抛出“找不到文件”错误

要获得“无效过程调用”错误,必须传递一些不安全的信息,例如空值:

>> strInputPath1 = Empty
>> set f = goFS.OpenTextFile(strInputPath1,1)
>>
Error Number:       5
Error Description:  Invalid procedure call or argument
这些事实使你极有可能

  • 在初始化和在.OpenTextFile()中使用变量strInputPath1之间更改了变量strInputPath1的内容
  • 或者初始化变量X并使用变量Y(Y&X可能是“strInputPath1”的变体)
  • 或者在不同的作用域(~Functions/Subs)中初始化并使用两个同名变量
使用“Option Explicit”启动脚本将降低此类错误的风险

添加了wrt“将fso命名为错误”评论:

由于VBScript的错误消息通常很难解释/理解,因此这可能是一个很好的机会来思考“什么可能出错?VBScript会告诉我有关该问题的哪些信息?我应该如何修复错误?将来如何避免?”

在goFS中给定一个严格的第一个参数和一个输入错误(=>空变量):

显而易见:在圆点左侧没有对象的情况下尝试调用方法(.operator)是不可能的

让我们将邪恶的goSF设置为一个对象:

>> Set goSF = New RegExp
>> set f = goSF.OpenTextFile(strInputPath1,1)
>>
Error Number:       438
Error Description:  Object doesn't support this property or method
仍然没有“无效过程调用或参数”错误。由于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

所以我的主张仍然有效。错误“无效的过程调用或参数”是由于向方法提供了Empty而导致的。OpenTextFile()在有效的FSO上调用。

这是一个老问题,但今天它让我有些困惑: 如果您试图打开一个您认为是ASCII但实际上是Unicode的文件,则OpenTextFile()也会触发无效的过程调用

所以

将成为

Set txsInput1 = FSO.OpenTextFile(strInputPath1, 1, false, -1)

这是一个老生常谈的问题,但今天我却被它咬了一口: 如果您试图打开一个您认为是ASCII但实际上是Unicode的文件,则OpenTextFile()也会触发无效的过程调用

所以

将成为

Set txsInput1 = FSO.OpenTextFile(strInputPath1, 1, false, -1)

这段代码对我来说很好(只要我为FSO创建Scripting.FileSystemObject)。您是否在其他地方将strInputPath1声明为另一种类型?我看不出你那些含糊不清的话。。。你可以包含更多的代码或pastebin链接。谢谢..获得了名为错误的fso,该代码对我来说很好(只要我为fso创建Scripting.FileSystemObject)。您是否在其他地方将strInputPath1声明为另一种类型?我看不出你那些含糊不清的话。。。你可以包含更多的代码或粘贴库链接。谢谢。fso的名称不对