.vbs Помогите мне пройти через каталог
Я написал сценарий, который работает. Теперь он просматривает каталог для данного файла и возвращает то, что находится на четвертой вкладке второй строки (RXC193), и переименовывает файл в тот, который был найден из файла, подобного этому:
@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 \ In Реализация проекта \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
Заранее спасибо Джо
2 ответа
Один из подходов заключается в параметризации имени файла в вашей подпроцедуре, чтобы его можно было вызывать несколько раз для разных файлов, например так:
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
Вот последний код без ошибок! Наконец, он выполняет поиск в моем каталоге файлов Tab-delimited.txt и получает информацию со третьей вкладки второго ряда (номер группы), а затем переименовывает файлы в соответствующий им номер группы! УРА!
вот последний безошибочный код!:
Call TwoDimensionArrayTest
Sub TwoDimensionArrayTest
Dim fso Dim oFile Dim arrline Dim arrItem Dim i Dim arrMain () Dim sFile Расположение, strResults
Const forReading = 1
strFolder = "C: \ Documents and Settings \ jmituzas.NMCLLC \ Desktop \ desktop2 \ New Folder (2) \ datafiles" Set objFSO = CreateObject ("Scripting.FileSystemObject") для каждого объекта objFile в objFSO.GetFolder(strFolder).Files If Right(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.Name
Set oFile = fso.OpenTextFile(objFile.Name, forReading, False)
Do While oFile.AtEndOfStream <> True
strResults = oFile.ReadAll
Loop
' Close the file
oFile.Close
'Освободить объект из памяти. Set oFile = Nothing
'Вернуть содержимое файла, если не пусто, если обрезать (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