Что нового

Удалить файлы в каталоге либо четные, либо нечетные

Grizli

Новичок
Сообщения
48
Репутация
2
Версия AutoIt: 3.
3.3.14.0
Описание:
Здравствуйте, нужна простенькая программа, у которой появляется стандартное окно выбора файла, в каталоге лежат изображения с возрастающей нумерацией. нужно если выбран нечетный файл удалить все нечетные файлы в каталоге, если выбран четный файл соответственно удалить все четные.
Примечания:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
удалять по имени-номеру или по нумерации поиска?
 
Автор
G

Grizli

Новичок
Сообщения
48
Репутация
2
По последней цифре, не важна маска имени, если в конце четная цифра то четный, если нечетная то нечетный
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Grizli
Сделал вывод файлов в консоль SciTE. Если всё правильно, то раскомментируйте нужный режим удаления самостоятельно ;)
И не забудьте сделать резервную копию
Код:
#include <File.au3>

Global $sFullName = FileOpenDialog("", "", "(*.*)", 3)
If @error Then Exit

Global $sDrive, $sDir, $sName, $sExt, $sPath, $sInt, $fOdd

_PathSplit($sFullName, $sDrive, $sDir, $sName, $sExt)
$sPath = $sDrive & $sDir
$sInt = StringRight($sName, 1)
If Not ($sInt == "0" Or Number($sInt)) Then Exit MsgBox(0, "Error", "Нумерация не обнаружена")
$fOdd = Mod($sInt, 2) = False

Global $aFiles = _FileListToArray($sPath, "*", 1)
If @error Then Exit MsgBox(0, "Error", "Ошибка поиска файлов")

For $i = 1 To $aFiles[0]
  $sInt = StringMid($aFiles[$i], StringInStr($aFiles[$i], ".", 0, -1) - 1 , 1)
  If Not ($sInt == "0" Or Number($sInt)) Then ContinueLoop
  If ($fOdd And Not Mod($sInt, 2)) Or (Not $fOdd And Mod($sInt, 2)) Then
    ConsoleWrite($sPath & $aFiles[$i] & @CRLF)
    ; FileRecycle($sPath & $aFiles[$i]) ; удаление в корзину
    ; FileDelete($sPath & $aFiles[$i]) ; полное удаление
  EndIf
Next
 
Верх