"类型不匹配" FileSystemObject.GetFile出错

时间:2017-04-29 02:01:29

标签: vbscript filesystemobject

此脚本使用随机生成的名称创建文本文件。我希望它的属性为隐藏系统,因此我将其应用于File.Attributes

无论如何,在运行此脚本时,会创建文本文件,但在应用其属性时,会引发以下错误:

  

类型不匹配:' GetFile' (行:7)

以下是代码:

Dim FSO, TList, WshShell

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

Set TList = FSO.GetFolder(WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%") + "/Temp").CreateTextFile(FSO.GetTempName)
FSO.GetFile(TList).Attributes = 22

由于TList是使用函数CreateTextFile设置的,因此无法解决导致问题的原因。我认为,函数CreateTextFile不会返回Scripting.File,它可能是TextStream或其他内容。我是对的吗?

这里导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:2)

CreateTextFile方法返回TextStream个对象。发生此错误是因为GetFile期望字符串作为输入参数。 TextStream无法设置文件的属性,因此构建字符串路径名是设置新文件属性的一种方法:

try {
    // you need to use the fully qualified name, not just the class name
    SomeObject object = (SomeObject) Class.forName("com.mypackage.SomeObject").newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
    // here you can handle incorrect config in your XML file
}