|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] FileSetAttrib: Проблема с рекурсией |
|
[решено] FileSetAttrib: Проблема с рекурсией
|
Новый участник Сообщения: 26 |
Профиль | Отправить PM | Цитировать Подскажите, пожалуйста, почему не срабатывает рекурсивное изменение атрибутов для всех файлов FARMENU.INI?
If Not FileSetAttrib("c:\farmenu.ini", "+HS", 1) Then MsgBox(4096,"Error", "Problem setting attributes.") EndIf Не знаю, где искать ошибку: либо неверно составил скрипт, либо ошибка внутри AUTOIT, либо что-то не так с файловой системой... |
|
Отправлено: 11:05, 10-09-2009 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать ну опять же можно просто заходить скриптом во все папки и проверять наличие нужного файла и выставления нужного атрибута при нахождении
|
------- Отправлено: 14:05, 10-09-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kaster:
If Not _FileSetAttribEx("c:\farmenu.ini", "+HS", 1) Then MsgBox(4096, "Error", "Problem setting attributes.") EndIf ;Флаг = 1 -> Обработка файлов с указанными именами в текущей папке и во всех ее подпапках. ;Флаг = 2 -> Обработка и файлов, и папок. ;Флаги можно совмещать (BitOR(1, 2)). Func _FileSetAttribEx($sFilePattern, $sAttributes, $iFlag=0) Local $sFlags = "" $sAttributes = StringRegExpReplace( _ StringStripWS($sAttributes, 8), _ "[-+]?([^-+])(?<=([-+])[^-+]|([-+])[^-+]{2}|([-+])[^-+]{3}|([-+])[^-+]{4}|([-+])[^-+]{5}|([-+])[^-+]{6}|([-+])[^-+]{7})", _ " \2\3\4\5\6\7\8\1") If BitAND($iFlag, 1) = 1 Then $sFlags &= " /S " If BitAND($iFlag, 2) = 2 Then $sFlags &= " /D " Local $iPID = Run(@ComSpec & ' /C Attrib ' & $sAttributes & $sFlags & '"' & $sFilePattern & '"', '', @SW_HIDE, 2) Local $iError = @error, $sStdRead = "" While ProcessExists($iPID) Sleep(10) $sStdRead &= StdoutRead($iPID) If @error Then ExitLoop WEnd Return (Number($iError = 0) + Number(StringRegExp($sStdRead, ": \w:\\") = 0) = 2) EndFunc |
|
------- Последний раз редактировалось Creat0R, 14-09-2009 в 13:53. Причина: Поправил функцию Отправлено: 14:26, 10-09-2009 | #12 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kaster:
|
|
------- Отправлено: 14:43, 10-09-2009 | #13 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
#include <File.au3> $j = 0 $start = TimerInit() _Setter('c:') $time = TimerDiff($start) / 1000 MsgBox(0, 'Time', $time & ' seconds elapsed' & @CRLF & $j & ' files scanned') Func _Setter($sPath) Local $aAll = _FileListToArray($sPath) If Not IsArray($aAll) Then Return For $i = 1 To $aAll[0] If _PathIsFolder($sPath & '\' & $aAll[$i]) Then $sNew_Path = $sPath & '\' & $aAll[$i] ;$iTotal_Folders += 1 _Setter($sNew_Path) Else $j += 1 If $aAll[$i] = 'farmenu.ini' Then FileSetAttrib($sPath & '\' & $aAll[$i], '+SH') EndIf Next Return EndFunc Func _PathIsFolder($sPath) Return StringInStr(FileGetAttrib($sPath), "D") EndFunc PS: кол-во файлов на диске С у меня ~175 тыс. |
|
------- Отправлено: 15:27, 10-09-2009 | #14 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата snoitaleR:
|
|
------- Отправлено: 16:13, 10-09-2009 | #15 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Creat0R, kaster, полезные алгоритмы, спасибо...
Иногда бывает необходимость пробежать все папки на диске... |
Отправлено: 16:55, 10-09-2009 | #16 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Creat0R, проверь, пожалуйста, действительно ли ошибка внутри функции FileSetAttrib, чтобы я уже не сомневался и мог поставить отметку [решено]...
|
Отправлено: 09:08, 14-09-2009 | #17 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата snoitaleR:
|
|
------- Отправлено: 13:39, 14-09-2009 | #18 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Пока будем использовать альтернативные варианты...
Будем считать тему решенной... |
Отправлено: 13:43, 14-09-2009 | #19 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 13:55, 14-09-2009 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Проблема с IE 6. | swr | Хочу все знать | 5 | 14-12-2009 16:53 | |
[решено] Проблема с OS XP | MastAV | Ноутбуки | 10 | 10-11-2009 21:39 | |
2008 - [решено] Проблема с ГП в AD., проблема при создании ГП к отдельным OU | kozemit | Windows Server 2008/2008 R2 | 2 | 15-07-2009 10:52 | |
Разное - [решено] проблема с ие | nmn | Microsoft Windows 2000/XP | 1 | 01-01-2009 18:47 | |
Интернет - [решено] Проблема с IE | AreKs | Microsoft Windows 2000/XP | 2 | 21-03-2008 18:02 |
|