【问题标题】:Reading each line of a text file into VB将文本文件的每一行读入VB
【发布时间】:2013-06-27 10:33:45
【问题描述】:

我希望自动化一些我目前必须执行的工作。 我目前收到许多机器名称,我必须在 unix 中从配置文件中查询它们,但我必须修改每天收到的列表以生成命令。我正在寻找一种自动化的方法,因此我可以将名称存储在一个文本文件中并在 vb 中运行一个脚本,该脚本将自动生成我需要在 unix 中运行的命令。

例如,文本文件 (machines.text) 可能包含以下内容:

ABCDE1234 ADEFR1234 BCDFREWE1

每一行都是机器名称,但我需要将其更改为小写并获得以下命令输出:

grep -i abcdef1234 */*.cfg
grep -i adefr1234 */*.cfg 
grep -i bcdfrewe1 */*.cfg

我有时一天会收到数百个,因此希望缩短流程,因为我可以使用收到的原始文件,而不必手动完成。

任何建议都将不胜感激,即使有人可以替代 VB 和 excel。

谢谢

【问题讨论】:

    标签: text excel output worksheet-function vba


    【解决方案1】:

    您可以在 Excel 中打开列表,以便所有要操作的数据进入 A 列,然后使用如下公式在 B、C、D 列中创建您的 UNIX 命令:

    FIRST 命令

    ="grep -i " &LOWER(LEFT(A:A,FIND(" ",A:A)))  & " */*.cfg"
    

    第二条命令

    ="grep -i "&LOWER(LEFT(TRIM(MID(A:A,FIND(" ",A:A),LEN(A:A))),FIND(" ",TRIM(MID(A:A,FIND(" ",A:A),LEN(A:A))))))&" */*.cfg"
    

    第三条命令

    ="grep -i "&LOWER(MID(RIGHT(A:A,LEN(A:A)-FIND(" ",A:A)),FIND(" ",RIGHT(A:A,LEN(A:A)-FIND(" ",A:A))),LEN(RIGHT(A:A,LEN(A:A)-FIND(" ",A:A)))))&" */*.cfg"
    

    在 A 列中处理完所有 texdt 后,将 B、C、D 列中的公式复制下来

    然后你可以运行下面的代码(可能需要调整)来创建你的输出:

    Sub getCommands()
    
    Dim oFso As New Scripting.FileSystemObject
    Dim oWriteFile As TextStream
    
    Dim oRange As Range
    
    Set oWriteFile = oFso.CreateTextFile("C:\Commands.txt", True)
    
    Set oRange = Range("B2")
    
    Do Until oRange.Text = ""
    
        With oWriteFile
            .WriteLine oRange.Text
            .WriteLine oRange.Offset(0, 1).Text ' second command
            .WriteLine oRange.Offset(0, 2).Text ' third command
        End With
        Set oRange = oRange.Offset(1, 0)
    Loop
    oWriteFile.Close
    
    End Sub
    

    【讨论】:

    • @user2527648:太好了,在这种情况下,请使用左侧向上/向下投票箭头下方的复选标记标记我的答案
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多