Tosyk
Новичок
- Сообщения
- 206
- Репутация
- 0
Пишу скрипт, который ищет айтемы из одного массива (небольшого) в другом (большом).
айтем в небольшом массиве - это неполный путь к файлу (в аттаче civ_female_act3.model_materials.txt)
айтем в большом массиве - это полный путь к файлу (в аттаче TextureList.lst)
если айтем из небольшого массива найден в большом, то файл по полному пути копируется в папку. Сейчас я просто ищу $find. Сам скрипт:
подскажите пожалуйста как это сделать.
айтем в небольшом массиве - это неполный путь к файлу (в аттаче civ_female_act3.model_materials.txt)
айтем в большом массиве - это полный путь к файлу (в аттаче TextureList.lst)
если айтем из небольшого массива найден в большом, то файл по полному пути копируется в папку. Сейчас я просто ищу $find. Сам скрипт:
Код:
#include <Array.au3>
#include <File.au3>
Global $aArrayInput, $aArrayOutput, $matArray
Global $sDir = @ScriptDir
Global $sFileName = '*'
Global $sFileExtension = 'texture.dds' ; or '*' for all files or 'pdf' for just PDFs
Global $sListPath = @ScriptDir & '\TextureList.lst'
Global $find = 'textures\cperrella\fabric\cloth_knits\wrinkles_01_n.texture' & '.dds'
Global $matInput = @ScriptDir & '\civ_female_act3.model_materials.txt'
Global $sExclude
$aArrayOutput = _FileListToArrayRec( $sDir, $sFileName & '.' & $sFileExtension, 1, 1, 0, 2 )
If IsArray($aArrayOutput) Then
If FileExists($sListPath) Then
_FileSearchInTXT()
Else
_FileWriteFromArray($sListPath, $aArrayOutput)
_FileSearchInTXT()
;~ _ArrayDisplay( $aArrayOutput )
EndIf
EndIf
_FileReadToArray($matInput, $matArray, $FRTA_COUNT)
_ArrayDelete($matArray, $matArray[1])
$sExclude = "===*|---*|shader*|material*| *"
$sExclude = StringReplace($sExclude, ".", "\.")
$sExclude = StringReplace($sExclude, "?", ".")
$sExclude = StringReplace($sExclude, "*", ".*?")
$iIndex = 0
For $i = 0 To UBound($matArray) - 1
If NOT StringRegExp($matArray[$i], $sExclude) Then
$matArray[$iIndex] = $matArray[$i]
$iIndex += 1
EndIf
Next
Redim $matArray[$iIndex]
For $i = UBound($matArray) - 1 To 0 Step -1
If $matArray[$i] = "" Then
_ArrayDelete($matArray, $i)
EndIf
Next
_ArrayTrim($matArray, 17, 0)
_ArrayDisplay($matArray, "2D array - no count (trimmed)", Default, 8)
;~ ----------------------------------------------------------------------------------------------
Func _FileSearchInTXT()
If $sListPath <> '' And $find <> '' Then
_FileReadToArray($sListPath, $aArrayInput)
For $i = 1 To UBound($aArrayInput) - 1
If StringInStr($aArrayInput[$i], $find) Then
ConsoleWrite("Found file: " & $aArrayInput[$i] & @CRLF)
EndIf
Next
Else
MsgBox(48, 'Error', 'A file was not picked or what to find was cancelled/empty!')
EndIf
EndFunc ;==>_FileSearchInTXT