Что нового

Куда делся _RecFileListToArray ?

Статус
Закрыто для дальнейших ответов.

tonycstech

Новичок
Сообщения
94
Репутация
3
У меня старый код с исползованием _RecFileListToArray
Явно новая версия Autoit убрала эту функцыю.
Чё делать ?

Вот код.
Код:
Func PathSwapsearchName($sDir)
    Local $aFiles
    $aFiles = _RecFileListToArray($sDir, "*.ini", 1, 1, 0, 2); List all the ini files on this path
    For $i = 1 To $aFiles[0]; Now taking each one in turn
        Local $sText
        $sText = FileRead($aFiles[$i]); Read the file contents
        ;MsgBox(0, $aFiles[$i], $sText); Display - just for interest
        $sText = StringReplace($sText, GUICtrlRead($hStringInput), GUICtrlRead($hReplaceInput)) ;Replace the current path with the new one
        If @extended Then; If there were replacements
            Local $hFile
            ;MsgBox(0, $aFiles[$i], $sText) ; Show the new content - just for interest
            FileSetAttrib($aFiles[$i], "-H") ;Remove Hidden attribute so it can write to file
            $hFile = FileOpen($aFiles[$i], 2); Open teh file and overwrite with the new content
            FileWrite($hFile, $sText)
            FileClose($hFile)
            FileSetAttrib($aFiles[$i], "+H") ;Restore Hidden attribute so it can write to file
        Else
            ;MsgBox(0, $aFiles[$i], "Not Found"); Say nothing was changed - just for interest
        EndIf
    Next
    MsgBox(64, "Information", "All Done", "", $hGUI)
EndFunc   ;==>PathSwapsearchName
 
Автор
T

tonycstech

Новичок
Сообщения
94
Репутация
3
Будет работать если просто поменять название функции или надо изменения вводит ?
Благословений вам.

А то вроде попробывал, не работает.
Код:
For $i = 1 To $aFiles[0]
For $i = 1 To $aFiles^ ERROR
 
Автор
T

tonycstech

Новичок
Сообщения
94
Репутация
3
Да я пример знаю. Я понять не могу почему For $i = 1 To $aFiles[0] даёт ошибку.
For $i = 1 To $aFiles[0]
От 1 до числа сколько бы там этих фаилов не было.
Там 345 фаилов, неужели не один не находит ?
_FileListToArrayRec($sDir, "*.ini", 1, 1, 0, 2) Здесь всё в порядке тоже. Должен искать все папки в нутри $Dir но как будто дам пусто.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Я понять не могу почему
Посмотрите код ошибки которую возвращает _FileListToArrayRec. думаю это прояснит ситуацию

Return Value
Success:a one-dimensional array made up as follows:
[0] = Number of Files/Folders returned
[1] = 1st File/Folder
[2] = 2nd File/Folder
...
[n] = nth File\Folder
Failure:an empty string and sets the @error flag to 1 with @extended set as follows:
1 - Path not found or invalid
2 - Invalid Include parameter
3 - Invalid Exclude parameter
4 - Invalid Exclude_Folders parameter
5 - Invalid $iReturn parameter
6 - Invalid $iRecur parameter
7 - Invalid $iSort parameter
8 - Invalid $iReturnPath parameter
9 - No files/folders found
 
Автор
T

tonycstech

Новичок
Сообщения
94
Репутация
3
Как посмотреть код ошибки ?
Код:
$sDir=.\#Projects#
$aFiles = _FileListToArrayRec($sDir, "*.ini", 1, 1, 0, 2) ; List all the ini files on this path
MsgBox (0,'',@error)

Так правильно ?
Говорит 1
Всё пварильно. .#\Projects# папка находится рядом с скриптом. Все файлы там.
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
$sdir = 'projects'
 
Автор
T

tonycstech

Новичок
Сообщения
94
Репутация
3
Нельзя.
.\projects точка и палка означают что папка находится здесь а не гдето. Типа вроде @ScriptDir
Изменения ничего не дают.
Переименовл #Projects# папку на Projects и изменил код соответсвенно.
Как был эррор 1 так и остался.

Код:
Func PathSwapsearchName()
    Local $aFiles, $sText, $hFile
    $aFiles = _FileListToArrayRec("Projects", "*.ini", 1, 1, 0, 2) ; List all the ini files on this path
    If $aFiles = IsArray Then
        For $i = 1 To $aFiles[0] ; Now taking each one in turn
            $sText = FileRead($aFiles[$i]) ; Read the file contents
            $sText = StringReplace($sText, GUICtrlRead($hStringInput), GUICtrlRead($hReplaceInput)) ;Replace the current path with the new one
            If @extended Then ; If there were replacements
                FileSetAttrib($aFiles[$i], "-H") ;Remove Hidden attribute so it can write to file
                $hFile = FileOpen($aFiles[$i], 2) ; Open teh file and overwrite with the new content
                FileWrite($hFile, $sText)
                FileClose($hFile)
                FileSetAttrib($aFiles[$i], "+H") ;Restore Hidden attribute so it can write to file
            Else
                ;MsgBox(0, $aFiles[$i], "Not Found"); Say nothing was changed - just for interest
            EndIf
        Next
    Else
        MsgBox (16,'',"Error=" & @error)
    EndIf
    MsgBox(64, "Information", "All Done", "", $hGUI)
EndFunc   ;==>PathSwapsearchName
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Ошибка обозначает, что путь не существует. И что значит нельзя? Путь берется в кавычки. Скопируй путь из адресной строки и вставь в код

If IsArray($afiles) Then
 
Автор
T

tonycstech

Новичок
Сообщения
94
Репутация
3
Как не существует ?
Вот ярлык на фаил который там. Их там сотни в разных папках.
"P:\Autoit projects\#Tools & Utilities\CSSIM\Source\#Projects#\GENERAL\Balfour with exchangeable blades #2.cssim"

Ах понял. Искал *.ini а надо было *.cssim
Вот дурак :biggrin:
 
Статус
Закрыто для дальнейших ответов.
Верх