Что нового

[Массивы] как вывести на экран массив файлов, но без последнего файла?

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Здравствуйте.
Как исключить последний файл из массива:
Код:
#Include <File.au3>
#Include <Array.au3>

$OldFiles = _FileListToArray('g:\2\', 's_*.exe', 1)

_ArrayDisplay($OldFiles)

Т.е. отобразить все кроме последнего.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
ivsatel

Код:
#Include <File.au3>
#Include <Array.au3>

$OldFiles = _FileListToArray('g:\2\', 's_*.exe', 1)
_ArrayDelete($OldFiles,UBound($OldFiles)-1)
_ArrayDisplay($OldFiles)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ivsatel,
Код:
#Include <File.au3>
#Include <Array.au3>

$OldFiles = _FileListToArray(@ScriptDir, '*', 1)

_ArrayDisplay($OldFiles)
$OldFiles[0] -= 1
_ArrayDisplay($OldFiles, 'No Last File', $OldFiles[0])
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
С Вашей помощью получилось следующее:

Код:
;Проверка на наличие файла и если файл есть то выйти из функции
if FileGetSize(@ScriptDir & '\' & $sFileNameK) = InetGetSize($sLastLinkK, 1) Then
$OldFiles = _FileListToArray(@ScriptDir, 'setup*.exe', 1)
$OldFiles[0] -= 1
For $i=1 to $OldFiles[0]
FileDelete(@ScriptDir & "\" & $OldFiles[$i])
Next
	Return
EndIf
;Тут если файла нет продолжается работа функции
$OldFiles = _FileListToArray(@ScriptDir, 'setup*.exe', 1)
For $i=1 to $OldFiles[0]
FileDelete(@ScriptDir & "\" & $OldFiles[$i])
Next

Но вот в последней секции что-то не то. Если файлов поподающих под маску нет то программа вылетает. Как этого избежать?
Вернее как описать условие, что если файла нет, то ничего удалять не нужно?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Добавить проверку как написано в примере http://autoit-script.ru/autoit3_docs/libfunctions/_filelisttoarray.htm

Код:
$OldFiles = _FileListToArray(@ScriptDir, 'setup*.exe', 1)
If @Error=4 Then
    MsgBox (0,"","Файлы/папки не найдены.")
    Exit
EndIf
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Вроде получилось)
Код:
$OldFiles = _FileListToArray(@ScriptDir, 'setup*.exe', 1)
If @Error=4 Then
    Sleep(500)
Else
For $i=1 to $OldFiles[0]
FileDelete(@ScriptDir & "\" & $OldFiles[$i])
Next
EndIf
 
Верх