Я пытаюсь использовать AutoIt для извлечения текста из нескольких файлов журнала размером более 500 МБ, а текст, который нужно извлечь, находится в столбце excel. У меня проблемы с FileRead, которые вызывают ошибку в памяти. Я даже попробовал FileReadToArray, который, как я думал, облегчит функции для обработки огромной строки. Все файлы имеют размер около 7,8 ГБ. Самый большой файл размером около 800 МБ.Поиск текста в файлах журналов со входами из столбцов в excel
Global $aUserNames[] = _Excel_RangeRead($file,$Worksheet) ; Usernames need to be read from Excel
Global $sFolderPath = FileSelectFolder("Select Folder", "")
Global $aFileList = _FileListToArrayRec($sFolderPath, "*.*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
If @error = 1 Then Exit MsgBox(0, "", "No Folders Found.")
If @error = 4 Then Exit MsgBox(0, "", "No Files Found.")
Local $sRegEx = "(?i)"
For $i = 0 To UBound($aUserNames) - 1
$sRegEx &= "\b" & $aUserNames[$i] & "\b|"
Next
$sRegEx = StringTrimRight($sRegEx, 1)
Global $Store
For $i = 1 To $aFileList[0]
$sFileContent = _FileReadToArray($aFileList[$i],$Store)
If StringRegExp($sFileContent, $sRegEx) Then MsgBox(0, "Info", "One of more users found in file " & $aFileList[$i])
Next
Этот код был поддержан jguinch на форуме AutoIt.
Вы можете попробовать использовать версию окна или Grep из СЭД для поиска файлов с помощью регулярных выражений - https://sourceforge.net/projects/unxutils/?source=typ_redirect В противном случае, вам, вероятно, нужно прочитать записывает строку за раз – Richard