0

現在実行しなければならないいくつかの作業を自動化することを検討しています。現在、構成ファイルから unix で照会する必要がある多数のマシン名を受け取りますが、毎日受け取ったリストを修正してコマンドを生成する必要があります。これを自動化する方法を探しているので、名前をテキスト ファイルに保存し、UNIX で実行する必要があるコマンドを自動的に生成するスクリプトを vb で実行できます。

たとえば、テキスト ファイル (machines.text) には次の内容が含まれる場合があります。

ABCDE1234 ADEFR1234 BCDFREWE1

各行はマシン名になりますが、これを小文字に変更して、次のコマンド出力を取得する必要があります。

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

1 日に数百件のファイルが届くこともあるので、受け取った元のファイルを使用するだけで済み、手動で処理する必要がないため、プロセスを短縮したいと考えています。

誰かが VB や Excel に代わるものを持っていたとしても、どんな提案も大歓迎です。

ありがとう

4

1 に答える 1

0

Excel でリストを開いて、操作するすべてのデータを列 A に入力し、次の式を使用して、列 B、C、D に UNIX コマンドを作成します。

最初のコマンド:

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

2番目のコマンド:

="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"

3番目のコマンド:

="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 で操作するすべてのテキストを取得したら、列 B、C、D の数式をコピーします。

以下は、3 つの結果コマンドを示すスクリーンショットです。 次に、以下のコードを実行して (微調整が必​​要な場合があります)、出力を作成します。

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 に答える