Text 将文本文件的每一行读入VB

Text 将文本文件的每一行读入VB,text,excel,output,worksheet-function,vba,Text,Excel,Output,Worksheet Function,Vba,我正在寻找一些自动化的工作,我目前必须执行。 我目前收到许多必须在unix中从配置文件查询的机器名,但我必须修改每天收到的列表以生成命令。我正在寻找一种自动化的方法,这样我就可以将名称存储在一个文本文件中,并在vb中运行一个脚本,该脚本将自动生成在unix中运行所需的命令 e、 g文本文件(machines.text)可能包含以下内容: ABCDE1234 ADEFR1234 BCDFREWE1 每一行都是机器名,但我要求将其改为小写,并获得以下命令输出: grep -i abcdef1234

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

e、 g文本文件(machines.text)可能包含以下内容:

ABCDE1234 ADEFR1234 BCDFREWE1

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

grep -i abcdef1234 */*.cfg
grep -i adefr1234 */*.cfg 
grep -i bcdfrewe1 */*.cfg
我有时一天收到数百份,因此希望缩短流程,因为我可以只使用收到的原始文件,而不必手动查看

任何建议都将不胜感激,即使任何人都可以选择VB和excel


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

第一个命令

="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"
第二个命令

="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"
第三个命令

="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"
一旦你把所有的texdt都放在A列中,把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:太好了,如果是这样的话,请在左边的向上/向下投票箭头下方用复选标记标记我的答案