我正在寻找自动化我目前必须完成的一些工作。 我目前收到一些机器名称,我必须从配置文件中查询unix,但我必须修改我每天收到的列表以生成命令。我正在寻找一种自动化方法,所以我可以将这些名称存储在一个文本文件中,并在vb中运行一个脚本,该脚本将自动生成我需要在unix中运行的命令。
例如文本文件(machines.text)可能包含以下内容:
ABCDE1234 ADEFR1234 BCDFREWE1
每一行都是机器名称,但我要求将其更改为小写并获得以下命令输出:
grep -i abcdef1234 */*.cfg
grep -i adefr1234 */*.cfg
grep -i bcdfrewe1 */*.cfg
我有时每天会收到数百个,所以我希望缩短流程,因为我可以使用我收到的原始文件,而不必手动完成。
任何建议都会受到赞赏,即使有人有VB和excel的替代品。
谢谢
答案 0 :(得分:0)
您可以在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"
THIRD命令:
="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