Vbscript &引用;“类型不匹配”;FileSystemObject.GetFile出错

Vbscript &引用;“类型不匹配”;FileSystemObject.GetFile出错,vbscript,filesystemobject,Vbscript,Filesystemobject,此脚本使用随机生成的名称创建文本文件。我希望它的属性是隐藏系统,所以我用File.Attributes应用了它 无论如何,在运行此脚本时,会创建文本文件,但在应用其属性时,会抛出以下错误: 类型不匹配:“GetFile”(第7行) 代码如下: Dim FSO, TList, WshShell Set FSO = WScript.CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScr

此脚本使用随机生成的名称创建文本文件。我希望它的属性是隐藏系统,所以我用
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
或其他东西。我说得对吗

是什么原因导致此错误?

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

Dim FSO, WshShell, TempFolder, TempFilename

Const HiddenAttribute = 2

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

TempFolder = WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%") + "\Temp"

If Not FSO.FolderExists(TempFolder) Then
  FSO.CreateFolder(TempFolder)
End If

TempFilename = TempFolder + "\" + FSO.GetTempName

CreateNewFile(TempFilename)
FSO.GetFile(TempFilename).Attributes = HiddenAttribute

Sub CreateNewFile(filename)
  Dim TS
  Set TS = FSO.CreateTextFile(filename, True)
  TS.Close
End Sub