Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] FileSetAttrib: Проблема с рекурсией

Ответить
Настройки темы
[решено] FileSetAttrib: Проблема с рекурсией

Аватара для snoitaleR

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, пожалуйста, почему не срабатывает рекурсивное изменение атрибутов для всех файлов FARMENU.INI?
Код: Выделить весь код
If Not FileSetAttrib("c:\farmenu.ini", "+HS", 1) Then
    MsgBox(4096,"Error", "Problem setting attributes.")
EndIf
Скрипт выдает сообщение "Problem setting attributes."
Не знаю, где искать ошибку: либо неверно составил скрипт, либо ошибка внутри AUTOIT, либо что-то не так с файловой системой...

Отправлено: 11:05, 10-09-2009

 

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


такой вопросик нескромный. а зачем рекурсия для файла?
рекурсивная обработка папки применяется когда необходимо проставить тот или иной атрибут не только папке но и всем подпапкам и файлам внутри нее. убери флаг рекурсии и все окэ

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 11:12, 10-09-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


snoitaleR,
Цитата:
почему не срабатывает рекурсивное изменение атрибутов для всех файлов FARMENU.INI?
А для некоторых срабатывает?
Цитата:
где искать ошибку
В файлах конечно, возможно они заблокированы.

kaster,
Цитата:
зачем рекурсия для файла?
Раз автор темы пишет о проблеме рекурсивной установки аттрибута файла, значет оно так и нужно ему .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 12:33, 10-09-2009 | #3


Аватара для snoitaleR

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня во многих папках есть локальное меню для FAR...
Я не хочу, чтобы данный файл был виден из проводника...
Утилита attrib.exe справляется с данной задачей...
Но удобнее было бы пользоваться скриптом AUTOIT...

Могу утверждать наверняка, что все файлы FARMENU.INI на диске полностью доступны для текущего пользователя, единственное, для некоторых из них уже установлены атрибуты "скрытый" и "системный"...
Я редактировал их совсем недавно стандартным инструментом FAR для работы с меню пользователя, никаких проблем...

Отправлено: 12:36, 10-09-2009 | #4


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Раз автор темы пишет о проблеме рекурсивной установки аттрибута файла, значет оно так и нужно ему . »
Я конечно не автор темы, и уж тем более не такой знаток тонкостей языка, как ты, но, как мне кажется (и это вполне логично), что рекурсионная обработка может относится только к папке в контексте вложенных в нее файлов и других папок. для одного файла, опять же по моему убеждению, нельзя применить рекурсию. для проверки, я взял файл, запустил обозначенный в шапке скрипт, получил ошибку. оно и понятно, нет папки, нет рекурсии. затем взял этот же файл, засунул ее в папку, запустил скрипт, все норм. и папка и файл внутри нее приобрели обозначенные атрибуты. опять же все норм. и вот теперь, снова хочется спросить, в терминах моего небогатого понимания языка, почему мой трюк прошел, а у автора нет? и опять же хочется спросить зачем нужна рекурсия там, где она неприменима

Выдержка из справки
Цитата Справка AutoIt:
file pattern File(s) to change, e.g. C:\*.au3, C:\Dir
+-RASHNOT Attribute(s) to set/clear. e.g. "+A", "+RA-SH"
recurse [optional] If this is set to 1, then directories are recursed into. Default is 0 (no recursion).
snoitaleR, могу посоветовать следующее, если не прав, знающие меня надеюсь поправят
Нужно пройтись по всем папкам и подпапкам, найти нужный файл и если он удовлетворяет шаблону (farmenu.ini) ставить ему атрибут, без флага рекурсии, так как он (флаг) позволяет применить атрибут только к папке и всему ее содержимому включая подпапки и файлы

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 12:42, 10-09-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата snoitaleR:
единственное, для некоторых из них уже установлены атрибуты "скрытый" и "системный" »
Вот и выявили проблему - функция FileSetAttrib возвращает 0 если она не смогла установить аттрибут для всех файлов (хотя в справке об этом не пишется, а должны были пометку сделать как минимум).


Цитата kaster:
рекурсионная обработка может относится только к папке в контексте вложенных в нее файлов и других папок. для одного файла, опять же по моему убеждению, нельзя применить рекурсию. »
А кто говорит об одном файле? Перечитай первый пост. Там же явно написано про рекурсию. Ты почему то убеждён что для snoitaleR'а рекурсия не нужна


Цитата kaster:
затем взял этот же файл, засунул ее в папку, запустил скрипт, все норм. и папка и файл внутри нее приобрели обозначенные атрибуты. »
Папка не должна принимать аттрибуты, если указано имя файла.

Цитата kaster:
почему мой трюк прошел, а у автора нет? »
Автор не трюками занимается, а хочет всего лишь понять почему скрипт выдаёт ошибку, я выше написал почему.

Цитата kaster:
опять же хочется спросить зачем нужна рекурсия там, где она неприменима »
Применима, читаем справку и ещё раз первый пост.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 12:55, 10-09-2009 | #6


Аватара для snoitaleR

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если очень интересно, то:
Код: Выделить весь код
attrib +h +s farmenu.ini /s
работает без проблем...

Отправлено: 13:04, 10-09-2009 | #7


Аватара для snoitaleR

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


kaster, скорее всего, не в этом причина...
Я добавил "звездочку" перед именем файла - та же ошибка выпадает...
Попробую снять атрибуты со всех файлов, потом посмотрю, после какого файла (перед каким файлом) происходит остановка...

Я, кажется, понял логику ошибки, но с моей логикой эта логика не совместима...
Если в одной из вложенных папок файл FARMENU.INI отсутствует, то выдается ошибка и в последующих папках смена атрибутов не производится...

Отправлено: 13:25, 10-09-2009 | #8


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Да. пока не проверишь, не поймешь
Цитата Creat0R:
Папка не должна принимать аттрибуты, если указано имя файла. »
да, это я оговорился, файлы принимали. но не суть
Цитата Creat0R:
Автор не трюками занимается, а хочет всего лишь понять почему скрипт выдаёт ошибку, я выше написал почему. »
да. действительно. а я по глупости, думал что раз че то не получается, то скрипт должен был ругнуться.
Цитата Creat0R:
Применима, читаем справку и ещё раз первый пост. »
повторение - мать учения. да, мне ее еще по всей видимости долго читать.

вобщем, snoitaleR, извини что ввел в заблуждение. действительно, как и говорит тебе гуру, у тебя условие стоит не очень хорошее, потому как не выполнится он может в самых ненужных местах, типа
Цитата snoitaleR:
для некоторых из них уже установлены атрибуты "скрытый" и "системный"... »
и
Цитата snoitaleR:
Если в одной из вложенных папок файл FARMENU.INI отсутствует, то выдается ошибка и в последующих папках смена атрибутов не производится... »
нужно другое, более стабильное

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 13:43, 10-09-2009 | #9


Аватара для snoitaleR

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не хотелось бы запускать attrib.exe из скрипта, когда есть встроенная функция...
Текстовые окна не очень приятны, кроме FAR...

Отправлено: 13:49, 10-09-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] FileSetAttrib: Проблема с рекурсией

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Проблема с 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




 
Переход