Цитата kaster:
Нужно пройтись по всем папкам и подпапкам, найти нужный файл и если он удовлетворяет шаблону (farmenu.ini) ставить ему атрибут »
|
Тогда уже проще вызвать attrib из ком. строки:
Код:

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