
Мне нужно найти 60 уникальных значений среди 17 .txt файлов. Обычно это просто "найти" и скопировать, когда я получаю значения по одному или два за раз, что, очевидно, не сработает для меня с таким большим списком.
В таблице около 60 номеров счетов. Мне нужно найти каждый номер счета в одном из 17 файлов .txt, чтобы я мог скопировать эту строку счета в другой файл .txt для редактирования/дополнения. Файлы .txt находятся в архиве ftp, поэтому мне нужно быть осторожным, чтобы вообще не изменить файлы .txt, хотя я могу скопировать их в Excel, если необходимо.
Я знаю, что есть функции поиска, но я пока не очень хорошо с ними знаком и не уверен, что именно мне нужно. Буду признателен за помощь с этим! Спасибо, L
решение1
Я составил сценарий, который может оказаться вам полезным.
Создайте папку под названиемСчетаи сохраните там скрипт с расширением .vbs.
Создайте в папке учетных записей папку с названиемвход. скопируйте все файлы учетных записей, в которых выполняется поиск, во входную папку. Все они должны быть файлами .txt, иначе они будут проигнорированы.
Создайте файл с именемномера_счетов.txtи перечислить каждый номер счета там на отдельной строке. Скрипт должен открыть каждый файл, прочитать строку и проверить ее по каждому номеру счета. Результаты поиска сохраняются вучетные записи_найдены.txt. Поставляется без гарантии, используйте на свой страх и риск. Надеюсь, это поможет.
' find all occurrances of an account number in a number of files
' place all account txt files into input folder
' accounts_found.txt is created if it is missing
' by 'Robert' 2017 - hereby placed into the Public Domain
' set some Constants here
Const ForRead = 1
Const ForWrite = 2
Const ForAppend = 8
Const OverWrite = True
Const NoOverWrite = False
Dim acct_num_list(100) ' max records for the array, num_accounts variable counts them anyway
inputFolderName = "input\" ' the folder where the txt files are
outputFileName = "accounts_found.txt" ' the output file for matched records
accountsFileName = "account_numbers.txt" ' the file which contains account numbers to search for
' = = = Start of Code = = =
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set outFile = objFSO.OpenTextFile(outputFileName, ForWrite, OverWrite)
Set objInputFolder = objFSO.GetFolder(inputFolderName)
Set sFileCollection = objInputFolder.Files
Set accounts_file = objFSO.OpenTextFile(accountsFileName, ForRead)
num_accounts = 0
DO While Not accounts_file.AtEndOfStream
acct_num_list(num_accounts) = accounts_file.ReadLine
num_accounts = num_accounts + 1
Loop
accounts_file.Close
For Each objFile in sFileCollection
If UCASE(objFSO.GetExtensionName(objFile)) = "TXT" then
Set sourceFile = objFSO.OpenTextFile(inputFolderName & objFile.Name, ForRead)
Do While Not sourceFile.AtEndOfStream
curr_line = sourceFile.ReadLine
For counter = 0 to num_accounts
if instr(1, curr_line, acct_num_list(counter),1) >= 1 then
outFile.WriteLine curr_line
End If
Next
Loop
End If
Next
' = = = End Of File = = =