我试图在用户桌面上找到特定链接并创建记录结果的文件

时间:2013-07-24 20:34:53

标签: vbscript

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

第16行每个objsubfolder在objFSO.GetFolder(“\”& strComputer&“%HOMEPATH%”)。子文件夹

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

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

computers.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"

1 个答案:

答案 0 :(得分: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()的有效路径。