【问题标题】:Extract text from last line in log file using vbscript使用 vbscript 从日志文件的最后一行提取文本
【发布时间】:2015-10-27 03:28:30
【问题描述】:

我有一个格式如下的日志文件:

AssetTag USERNAME 日期时间本地


abc123456 Sam 2015 年 10 月 15 日上午 8:22:14 本地

abc87363 乔 2015 年 10 月 15 日上午 8:55:59 本地


我需要使用批处理文件从日志文件的最后一行提取用户名。 IE:从最后一行中提取“Joe”。

我正在考虑某种正则表达式来查找第一个空格并选择第一个空格和下一个空格之间的文本...应该是 'Joe'...

我用这个来提取最后一行:

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\logs\UserAudit.log", ForReading)

Do Until objFile.AtEndOfStream
    strNextLine = objFile.ReadLine
    If Len(strNextLine) > 0 Then
        strLine = strNextLine
    End If
Loop

objFile.Close

Wscript.Echo strLine

编辑:实际上是 2 个标签将资产标签和用户名分开,1 个标签将用户名和日期分开

【问题讨论】:

    标签: regex for-loop vbscript


    【解决方案1】:

    我用更多的谷歌找到了它......

    以下脚本的作用..

    1) 提示输入资产标签 2) 从日志文件中读取最后一行,提取用户名 3) 在 AD 中查找用户名以找到员工姓名

    Const ForReading = 1
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strAsset= INPUTBOX("Please enter the Asset Tag:")
    strLog = "\\" & strAsset & "\C$\Logs\UserAudit.log"
    
    'Set objFile = objFSO.OpenTextFile("C:\logs\UserAudit.log", ForReading)
    Set objFile = objFSO.OpenTextFile(strLog, ForReading)
    
    Do Until objFile.AtEndOfStream
        strNextLine = objFile.ReadLine
        If Len(strNextLine) > 0 Then
            strLine = strNextLine
        End If
    Loop
    
    objFile.Close
    intStart = InStr(strLine, "     ")
    If intStart <> 0 Then
            intStart = intStart + 2
            strText = Mid(strLine, intStart, 250)
            For i = 1 to Len(strText)
                If Mid(strText, i, 1) = "   " Then
                    Exit For
                Else
                    strData = strData & Mid(strText, i, 1)
                End If
            Next
        End If
    
    'Username from Log file
    Wscript.Echo strData
    
    'Lookup Account for Staff Name
    
    SET objSystemInfo = CREATEOBJECT("ADSystemInfo") 
    strDomain = objSystemInfo.DomainShortName
    strUser = strData
    
    wscript.echo GetUserDN(strUser,strDomain)
    strAD = GetUserDN(strUser,strDomain)
    
    intStart = InStr(strAD, "CN=")
    If intStart <> 0 Then
            intStart = intStart + 3
            strText = Mid(strAD, intStart, 250)
            For i = 1 to Len(strText)
                If Mid(strText, i, 3) = ",OU" Then
                    Exit For
                Else
                    strName = strName & Mid(strText, i, 1)
                End If
            Next
        End If
    wScript.echo strName
    
    FUNCTION GetUserDN(BYVAL strUserName,BYVAL strDomain)
        SET objTrans = CREATEOBJECT("NameTranslate")
        objTrans.Init 1, strDomain
        objTrans.SET 3, strDomain & "\" & strUserName 
        strUserDN = objTrans.GET(1) 
        GetUserDN = strUserDN
    END FUNCTION
    
    'Cleanup
    intStart=""
    strUser=""
    strDomain=""
    strName=""
    strAD=""
    strText=""
    strLine=""
    strNextLine=""
    

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多