Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Изменение атрибута "скрытый" горячими клавишами 
Author Message
Batya



PostPosted: Tue Apr 26, 2011 13:45    Post subject: Reply with quote

Мои 5 копеек - vbs-скрипт:
Code:
'=====================================================================
' Изменение атрибута у отмеченных файлов и папок (файлов в них)

' Параметры:
' {файл-список} {битовый флаг атрибута} [{режим}]
' где {режим} может принимать значения:
'     0 - смена атрибута (по умолчанию),
'     1 - установка атрибута,
'     2 - снятие атрибута.
' Наиболее часто используемые значения {битовый флаг атрибута}:
'     1 - только чтение,
'     2 - скрытый,
'     4 - системный,
'     32 - архивный.

' Пример параметров вызова из TC (установка атрибута "Скрытый"):
' %L 2 1

' Автор - Batya
'=====================================================================

Option Explicit
Dim FSO, StreamFile, Selected, CurrFolder, Attr, Mode
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
  Set StreamFile = FSO.OpenTextFile(.Arguments(0), 1)
  Attr = .Arguments(1)
  If .Arguments.Count < 3 Then
    Mode = 0
  Else
    Mode = CInt(.Arguments(2))
  End If
End With
Do While Not StreamFile.AtEndOfStream
  Selected = StreamFile.ReadLine
  If FSO.FileExists(Selected) Then
    ChangeAttr FSO.GetFile(Selected)
  End If
  If FSO.FolderExists(Selected) Then
    Set CurrFolder = FSO.GetFolder(Selected)
    ChangeAttr CurrFolder
    FolderProcess CurrFolder
  End If
Loop
'MsgBox("Выполнено!")
Set FSO        = Nothing
Set StreamFile = Nothing
Set CurrFolder = Nothing
Wscript.Quit()

Sub FolderProcess(CurrFolder)
  Dim f
  For Each f in CurrFolder.SubFolders
    ChangeAttr f
    FolderProcess f
  Next
  For Each f in CurrFolder.Files
    ChangeAttr f
  Next
End Sub

Sub ChangeAttr(pFObj)
  With pFObj
    Select Case Mode
      Case 0 .Attributes = .Attributes Xor     Attr
      Case 1 .Attributes = .Attributes Or      Attr
      Case 2 .Attributes = .Attributes And Not Attr
    End Select
  End With
End Sub

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Tue Apr 26, 2011 16:01; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group