0

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

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

ABCDE1234 ADEFR1234 BCDFREWE1

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

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

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

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

谢谢

4

1 回答 1

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"

第三条命令

="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
于 2013-06-27T11:02:30.360 回答