2013-06-27 20 views
1

我期待自動執行一些我目前必須執行的工作。 我目前收到許多機器名稱,我必須從配置文件在unix中查詢,但我必須修改每天收到的列表以生成命令。我正在尋找一種方法來自動執行此操作,因此我可以將這些名稱存儲在文本文件中,然後在vb中運行腳本,該腳本將自動生成我需要在unix中運行的命令。將文本文件的每一行讀入VB

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

ABCDE1234 ADEFR1234 BCDFREWE1

每條線將是機器名,但我需要此被改變爲小寫字母和得到以下命令的輸出:

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

我有時會收到數百一天,所以希望縮短流程,我可以只使用我收到原始文件,而不必手動去日粗糙它。

任何建議將不勝感激,即使任何人有任何替代VB和Excel。

感謝

回答

0

,你可以在Excel中打開列表,使所有的數據被操縱進入A柱,然後用公式如下創建您的UNIX在列B,C,d命令:

第一個命令

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

Below is a screenshot showing the three result commands 那麼你可以運行下面的代碼(可能需要調整)來創建您的輸出:

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 
+0

我會試試這個tomorow,感謝Phili p – AndrewTodd1991

+0

@ user2527648:任何運氣? –

+0

嗨菲利普,是的,它的工作!謝謝。 – AndrewTodd1991