Что нового

[Файловая система] Работа с атрибутами файлов и папок

damien2008

Осваивающий
Сообщения
178
Репутация
34
Добрый день.
Такая задача:

Есть каталог с подкаталогами и файлами такого вида:

Zoltar
|
+-------Ann ----------- bio.doc
| |
| +Wishes +--- 1.txt
| +----2.txt
| +----3.txt
|
+-------Marry ----------- bio.xls
| |
| +Wishes +--- 1.txt
| +----2.rtf
| +----3.xls
|
+--------Bob ----------- bio.rtf
| |
| +Wishes +--- 1.tmp
| +----2.txt
| +----3.ini
|
+--------Steve ----------- bio.dat
|
+Wishes +--- 1.txt
+----2.txt
+----3.txt

У каталогов и файлов разные атрибуты (RA, SH, AH, RAS, и т.д.) и дата создания.
Необходимо: снять атрибуты, сменить время, и выставить атрибуты на место.
Вот что получилось:

Код:
#NoTrayIcon
#include <File.au3>
#include <Array.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>

Global  $sDirPath = @ScriptDir & '\ZOLTAR'

FileSetAttrib($sDirPath, '-RASHNOT', 1) ; снимаем атрибуты
FileSetTime($sDirPath, '20110704000000', 0, 1) ; меняем время
FileSetTime($sDirPath, '20110704000000', 1, 1) ; меняем время
FileSetTime($sDirPath, '20110704000000', 2, 1) ; меняем время


как выставить атрибуты обратно как и были, помогите...

вот нашел код, как его прикрутить, бог его знает... может атрибуты можно как-то экспортировать в текстовый файл по маске:
\ZOLTAR\каталог\подкаталог\файл.расширение АТРИБУТЫ
\ZOLTAR\каталог\подкаталог\файл.расширение АТРИБУТЫ,
а потом считывать и восстанавливать, а то файлов много, не говоря уже о уровнях вложения...

Код:
$FileList = _FileListToArray($sDirPath, '*', 1)
For $i = 1 To $FileList[0]
    $Attrib = FileGetAttrib($sDirPath & '\' & $FileList[$i])


P.S. плиз хелп...
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
А что если выполнить поиск файлов\папок с рекурсией любым из известных способов
(например : http://www.autoitscript.com/forum/topic/126198-recfilelisttoarray-new-version-22-may-11/page__hl___recfilelisttoarray)

А затем в цикле для нужных файлов выполнить :
Запоминание атрибутов файла
Снятие атрибутов
Изменение файла
Восстановление атрибутов файла




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

Что-то вроде этого :
Код:
#include <Array.au3>
#include "RecFileListToArray.au3"

$sRoot=@ScriptDir
$aArray = _RecFileListToArray($sRoot, "*", 0, 1, 1)

_ArrayDisplay($aArray)

For $i=1 To UBound($aArray)-1
    $sPath=$sRoot & "\" &  $aArray[$i]
 ;   Здесь условие необходимости снятия атрибутов If ..... Then ContinueLoop
$sAtr=FileGetAttrib ( $sPath)
    FileSetAttrib($sPath, '-RASHNOT', 0) ; снимаем атрибуты
    ; .......Выполняем необходимые операции
    FileSetAttrib($sPath, $sAtr, 0) ; восстанавливаем атрибуты

Next
 
Верх