Что нового

Цикл удаление файлов по маске в которую входит переменная

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Доброго времени суток. Удалить единичный файл труда не составляет. Удалить заранее составленный список файлов тоже особого труда не составляет. Но если список большой или меняется, у меня возникают проблемы с удалением файлов.
Задача удалить все файлы в которых есть буквы "screen" после которых идет цифра, которая не должна превышать определенную переменную $Counter. Тоесть $Counter = 4, значит screen5 уже не удаляется. Удаляются screen1, screen2, screen3, screen4.
По идее это должно быть что-то типа такого:
Код:
$File = @ScriptDir & "\screen" & Значок цифры & ".bmp"
   While $z <> 0 And $z <= $Counter
   If FileExists(StringRegExp($File,'screen' & $z)) Then FileDelete($File)
   WEnd

Ну или как вообще удалять, чтоб не нарваться на ошибку удаления? Я же правильно понимаю, что нужно проверить, существует файл или нет и тогда удалять?
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
#include 'file.au3'
$path=@ScriptDir&'\22121'
$Counter = 4
$file=_FileListToArray($path,'*')
For $i = 1 To  $file[0]
	If StringRegExp($file[$i],'screen[1-'&$Counter&'].bmp') Then FileDelete($path&'\'&$file[$i])
Next
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Код:
#include 'file.au3'
$path = @ScriptDir & '\22121'
$Counter = 4
$file = _FileListToArray($path, '*.bmp')
For $i = 1 To $file[0]
    If StringRegExpReplace($file[$i], '[^0-9]', '') <= $Counter Then FileDelete($path & '\' & $file[$i])
Next
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Не срабатывает. При выводе в консоль таким образом:
Код:
$file = _FileListToArray($path, '*.bmp')
ConsoleWrite($file)

или
Код:
$file = _FileListToArray($path, '*.bmp')
ConsoleWrite(_ArrayDisplay($path,"$path"))

Пишет 0
Без вывода в обоих случаях пишет ошибку:
Код:
: ==> Subscript used on non-accessible variable.:
For $i = 1 To  $file[0]
For $i = 1 To  $file^ ERROR
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Справку открой.
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Я не самый понятливый. Догадываюсь, что это связано с кодом ошибки. Хотя это то, что я хотел избежать.
Закоментировал
Код:
& '\22121'
И все стало работать.
Но я так и не понял, что за ошибка.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
в справке указаны примеры как перебрать все элементы массива в цикле. ты же в консоль пишешь указатель на массив. ясно дело что буде ноль
или как можно в _arrayDisplay отобразить не массив? )
догадываться не нужно, нужно читать справку. это самое первое чему должен научиться кодер. лично я всегда смотрю справку
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
ты же в консоль пишешь указатель на массив
Почему-то думал, что выведет построчно весь массив
В любом случае, если убирал вывод в консоль, то выдавало ошибку с указанием на file. А закоментировал и все заработало. Я так и не понял, что значит та часть строки.
догадываться не нужно, нужно читать справку
Ничего не хочу сказать, но почему-то эта справка дается мне с трудом. Читал справку по php и вопросов почти не возникало. Я уже как-то писал, что тут на форму человек мне в два слова пояснил лучше, чем написано в справке. Хотя я вижу, что справка очень полная и подробная. Но не заходит по крайней мере сходу.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Это имя папки для примера. В твоем случае путь другой
не освоишь справку, так и будешь страдать с элементарными задачами
 
Последнее редактирование:
Верх