0

我以前使用过类似的,并且我在我们网络中的每台计算机上都拥有本地管理员权限。以下代码在第 16 行字符 1 上生成错误。

第 16 行对于 objFSO.GetFolder("\" & strComputer & "%HOMEPATH%").subfolders 中的每个 objsubfolder

如果该文件存在,它应该在文本文件中写一行来指示每个具有配置文件的用户。如果文件不存在,则应在同一文本文件中写入一行。

我得到的错误是找不到路径 800A004C。

computer.txt 文件包含我要检查的所有计算机的列表。

InputFile = "computers.txt"
Const DeleteReadOnly = True
Const ForAppending = 8

Dim goFS  : Set goFS  = CreateObject("Scripting.FileSystemObject")
Dim gsLog : gsLog     = ".\logdemo.log"
WScript.Echo gsLog, "exists:", CStr(goFS.FileExists(gsLog))
'                           .OpenTextFile(filename[, iomode[, create[, format]]])
Dim goLog : Set goLog = goFS.OpenTextFile(gsLog, ForAppending, True)
goLog.WriteLine Now & " start"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(InputFile)
Do While Not (objFile.AtEndOfStream)
strComputer = objFile.ReadLine
For Each objsubfolder In objFSO.GetFolder("\\" & strComputer & "%HOMEPATH%").subfolders

If objFSO.FileExists(objsubfolder.Path & "\desktop\program1.LNK") Then
golog.WriteLine Join(Array(Now, strComputer, objsubfolder, "This Computer has Program 1"))

Else

golog.WriteLine Join(Array(Now, strComputer, objsubfolder, "None"))

End If
Next
Loop

golog.WriteLine Now & " End"
golog.WriteLine "-----------------------------------------------------------"
golog.Close

MsgBox "Done"
4

1 回答 1

1

为了证明 FSO 不会自动扩展环境字符串:

  Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
  Dim oWS : Set oWS = CreateObject("WScript.Shell")
  Dim sPath

  sPath = "%windir%\addins"
  WScript.Echo qq(sPath), CStr(oFS.FolderExists(sPath))
  sPath = oWS.ExpandEnvironmentStrings("%windir%\addins")
  WScript.Echo qq(sPath), CStr(oFS.FolderExists(sPath))

输出:

"%windir%\addins" False
"C:\WINDOWS\addins" True

因此,投入一些工作来为 .GetFolder() 提供有效路径。

于 2013-07-24T22:22:08.767 回答