Что нового

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

DyadyaGenya

Новичок
Сообщения
192
Репутация
0
Доброго времени суток. Удалить единичный файл труда не составляет. Удалить заранее составленный список файлов тоже особого труда не составляет. Но если список большой или меняется, у меня возникают проблемы с удалением файлов.
Задача удалить все файлы в которых есть буквы "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 Гуру
Сообщения
985
Репутация
392
Код:
#include 'file.au3'
[email protected]&'\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,401
Репутация
596
Код:
#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

Новичок
Сообщения
192
Репутация
0
Не срабатывает. При выводе в консоль таким образом:
Код:
$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,401
Репутация
596
Справку открой.
 
Автор
D

DyadyaGenya

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

joiner

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

DyadyaGenya

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

joiner

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