【问题标题】:How to check existing file for entries, so not to rewrite data如何检查现有文件的条目,以免重写数据
【发布时间】:2012-06-27 19:43:03
【问题描述】:

我创建的是一个脚本,它从计算机中提取戴尔服务代码、用户名和计算机名,并将这些信息编译成 .csv 文件。该脚本将通过 Active Directory 登录脚本实现,因此最终用户无需执行任何操作。

我遇到的问题是,每次有人登录时,它都会收集他们的信息,并将其添加到列表中。这意味着我的列表中可能只有两个反复登录计算机的人。

我希望脚本在 .csv 文件中搜索收集的特定数据,如果该数据存在,则不要输入它。

我目前的代码是这样的:

dim goFS, tsUsers, bFound
set goFS = createObject("Scripting.FileSystemObject")
set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 2, True)
bFound = False
Do Until tsUsers.AtEndOfStream
   If 1 = Instr(tsUsers.ReadLine(), sUser) Then
     bFound = True
     WScript.Quit (0)
      Exit Do
   End If
Loop
tsUsers.Close
If Not bFound Then
   Set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 8, True)
   tsUsers.WriteLine sUser
   tsUsers.Close
End If

'Get Dell Service Tag Info
set ProSet = GetObject("winmgmts:").InstancesOf("Win32_BIOS")
Set ProSet1 = GetObject("winmgmts:").InstancesOf("Win32_SystemEnclosure")
For each Pro in ProSet
  For each Pro1 in ProSet1
    ServiceTag=Pro.SerialNumber
    exit for
  Next
  exit for
Next

'get username and computername, could also be asked in a batch
Set oShell     = WScript.CreateObject("WScript.Shell")
Set oShellEnv  = oShell.Environment("Process")
sComputerName  = oShellEnv("ComputerName")
sUsername      = oShellEnv("username")

dim filesys, filetxt, getname, path
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("\\xx\Gathering\DataLog.csv", 8, True, -2)
path = filesys.GetAbsolutePathName("\\xx\Gathering\DataLog.csv")
getname = filesys.GetFileName(path)
filetxt.WriteLine sUsername & ", " & sComputerName & ", " & ServiceTag
filetxt.Close

我遇到的问题是运行时错误:800A0036 (Bad File Mode) in location (Line 5, Char 1)。

谢谢大家!

【问题讨论】:

    标签: database vbscript


    【解决方案1】:

    你的

    set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 2, True)
    

    打开文件 ForWriting。

    参照。 the same last week

    【讨论】:

    • 我不希望它用于写作吗?
    • @KeyferMathewson 没有;首先 ForReading 检查,然后 ForAppending 添加新用户。我确实在这里拼出来了:stackoverflow.com/a/11141008/603855
    • 我看错了最后一个,抱歉。现在似乎它没有写入文件,或者搜索甚至没有发生。有什么想法吗?
    • @KeyferMathewson 如果您运行的代码与您在问题中发布的完全一致,那么您必须将“获取用户名”部分拉到顶部并规范化变量(名称) sUser 与 sUserName。
    猜你喜欢
    • 2014-04-21
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多