2010-09-01 68 views
0

我已經寫了一個腳本,可以工作。它現在所做的是通過目錄查看給定文件並返回第二行第四個選項卡(RXC193)上的內容,並將文件重命名爲從以下文件中找到的文件:.vbs幫我循環這個目錄

@Program @ RxBIN @RXPCN @RxGroup @MemberID @WebsiteE @WebsiteS @VerticalLogo @TextLogo
RXCUT 013824 RXCUT RXC193 RXC5FHXF9 www.rxcut.com/HBG www.rxcut.com/HBG/es,P:\ RxCut \在設計實施\ RXC193

我需要這個腳本能夠做的是循環目錄並且通過這個RXC#####重命名所有文件。下面是該腳本:

Call TwoDimensionArrayTest 

Sub TwoDimensionArrayTest 
' Version 1.0 
' Writtem by Krystian Kara 
' Dated 25-Jan-2009 


    Dim fso 
    Dim oFile 
    Dim arrline 
    Dim arrItem 
    Dim objFolder 
    Dim i 
    Dim arrMain() 
    Dim sFileLocation, strResults 

    Const forReading = 1 

' The file contains on each line: 
    ' Text1 (tab) Text2 (tab) Text3 (tab) Text4 
    ' Text5 (tab) Text6 (tab) Text7 (tab) Text8 
'etc etc 


    Set fso = CreateObject("Scripting.FileSystemObject") 
     sFileLocation = "file 2.txt" 

     Set oFile = fso.OpenTextFile(sFileLocation, forReading, False) 

    Do While oFile.AtEndOfStream <> True 
     strResults = oFile.ReadAll 
    Loop 

' Close the file 
    oFile.Close 

' Release the object from memory 
    Set oFile = Nothing 

' Return the contents of the file if not Empty 
    If Trim(strResults) <> "" Then 

     ' Create an Array of the Text File 
     arrline = Split(strResults, vbNewLine) 
    End If 

    For i = 0 To UBound(arrline) 
     If arrline(i) = "" Then 
      ' checks for a blank line at the end of stream 
      Exit For 
     End If 

     ReDim Preserve arrMain(i) 

      arrMain(i) = Split(arrline(i), vbTab) 

    Next 

    fso.MoveFile "file 2.txt", arrMain(1)(3) & ".txt" 

End Sub ' TwoDimensionArrayTest 

由於提前, 喬

回答

0

一種方法是參數化的子過程的文件名,以便它可以被稱爲不同的文件多次,像這樣:

Sub TwoDimensionArrayTest(fileName) 'you may want a more descriptive name 

    ' ... 
    sFileLocation = fileName 
    ' ... 

End Sub 

然後,寫一個循環,通過你的目錄去,每次圍繞需要你的子:

Dim fso, folder 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder("Your Folder Name") 
For Each file In folder.Files 
    TwoDimensionArrayTest file.Path 
Next 
+0

我總是收到inv alid呼叫過程 – jmituzas 2010-09-01 18:42:58

+0

你也應該刪除,因爲我建議的更改後您的通話'線TwoDimensionArrayTest','TwoDimensionArrayTest'需要一個參數。 – Jacob 2010-09-01 19:55:04

0

這裏是最終的錯誤免費代碼!最後讓它搜索Tab-delimited.txt文件的目錄,並從第二行抓取第三個選項卡(組編號),然後將文件重命名爲其相應的組編號!好極了!

繼承人最終無差錯的代碼!:

Call TwoDimensionArrayTest 

子TwoDimensionArrayTest

昏暗FSO 昏暗OFILE 昏暗arrline 昏暗arrItem 昏暗我 昏暗arrMain() 昏暗sFileLocation,strResults

Const forReading = 1 

strFolder =「C:\ Documents and Settings \ jmituzas.NMCLLC \ Desktop \ desktop2 \ New Folder(2)\ datafiles」 設置objFSO = CreateObject(「Scripting.FileSystemObject」) 對於每個objFile在objFSO.GetFolder(strFolder) .Files 如果右(LCASE(objFile.Name),4)= LCASE( 「TXT」)然後

' The file contains on each line: 
' Text1 (tab) Text2 (tab) Text3 (tab) Text4 
' Text5 (tab) Text6 (tab) Text7 (tab) Text8 

「等等等等

FSO設置=的CreateObject( 「Scripting.FileSystemObject的」) sFileLocation = objFile。名稱

Set oFile = fso.OpenTextFile(objFile.Name, forReading, False) 

Do While oFile.AtEndOfStream <> True 
    strResults = oFile.ReadAll 
Loop 

' Close the file 
oFile.Close 

'從內存中釋放對象 設置OFILE =無

' 如果不爲空 如果TRIM(strResults)<> 「」 那

' Create an Array of the Text File 
    arrline = Split(strResults, vbNewLine) 
End If 

For i = 0 To UBound(arrline) 
    If arrline(i) = "" Then 
     ' checks for a blank line at the end of stream 
     Exit For 
    End If 

    ReDim Preserve arrMain(i) 

     arrMain(i) = Split(arrline(i), vbTab) 

Next 

    fso.MoveFile sFileLocation, arrMain(1)(3) & ".txt" 
返回文件的內容

End If Next End Sub'TwoDimensionArrayTest