"Type Mismatch" FileSystemObject.GetFile 错误

"Type Mismatch" Error with FileSystemObject.GetFile

此脚本使用随机生成的名称创建一个文本文件。我希望它的属性是隐藏系统,所以我用 File.Attributes.

应用它

无论如何,虽然 运行 这个脚本,文本文件被创建,但是当涉及到应用它的属性时,它抛出以下错误:

Type Mismatch: 'GetFile' (Line: 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 不是 return Scripting.File,它可能是 TextStream 之类的。我说得对吗?

这里出现此错误的原因是什么?

CreateTextFile method returns a TextStream object. The error occurs because GetFile 需要一个字符串作为输入参数。 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