Что нового

[Файловая система] Удаление файлов с исключениями

sanf

Новичок
Сообщения
30
Репутация
0
Подскажите как сделать скрипт удаления файлов и папок с исключениями.
Нужно удалить все файлы и папки по сл. пути C:\Users\%username%\AppData\Local\1C\1Cv82\
за исключением файлов с расширением *.pfl *.lst
и в пути C:\Users\%username%\AppData\Roaming\1C\1Cv82\
за исключением файлов с расширением *.pfl и папки ExtCompT
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
sanf
_FO_FileSearch, в параметре $fInclude указать False
Аналогично в _FO_FolderSearch.


Добавлено:
Сообщение автоматически объединено:

sanf
Только тестируй на копиях, а то поудаляешь и будешь меня винить... Например папка ExtCompT не удалиться, а папки внутри вполне. Вернее выведет их в массив.
 
Автор
S

sanf

Новичок
Сообщения
30
Репутация
0
пути задавать $path ?
а как все выглядеть будет все равно не пойму, маловато знаний еще...(
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
sanf
Примерно так (не тестировал)

Код:
#include <Array.au3>
#include <FileOperations.au3>

$FileList = _FO_FileSearch('C:\Users\Admin\AppData\Local\1C\1Cv82', '*.pfl|*.lst', False)
_ArrayDisplay($FileList) ; смотрим массив

If MsgBox(4, 'Сообщение', 'Удалить файлы ?') = 6 Then ; если "Да", то
	$err = ''
	For $i = 1 To $FileList[0] ; цикл удаления файлов
		If Not FileDelete($FileList[$i]) Then ; если не удалось удалить с первого раза, то
			If Not (FileSetAttrib($FileList[$i], '-RST') And FileDelete($FileList[$i])) Then ; если не удалось удалить с предварительным снитием атрибута "Только чтение", то
				$err &= $FileList[$i] & @CRLF ; пишем в лог
			EndIf
		EndIf
	Next
	If $err Then MsgBox(0, 'Error', $err) ; если в логе хоть что-то есть, то выводим его
EndIf


для папок
Код:
$FileList = _FO_FolderSearch('C:\Users\%username%\AppData\Roaming\1C\1Cv82', 'ExtCompT', False)
_ArrayDisplay($FileList) ; смотрим массив

Только для папок по умолчанию уровень вложения равен нулю, думаю так и надо, ведь смотрим как я понимаю в корне. Хотя в этом случает можно использовать
Код:
_FileListToArray

и в цикле проверять чтобы папка не равна "ExtCompT"
 
Автор
S

sanf

Новичок
Сообщения
30
Репутация
0
Line 2
#include <FileOperations.au3>
Error: Error opening file
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
sanf

Значит нужно добавить эту библиотеку в:
Код:
c:\Program Files\AutoIt3\Include\
 
Верх