View previous topic :: View next topic |
Author |
Message |
badboy2001
Joined: 14 Apr 2011 Posts: 1
|
(Separately) Posted: Thu Apr 14, 2011 12:46 Post subject: Изменение атрибута "скрытый" горячими клавишами |
|
|
Подскажите как с помощью горячих клавиш присвоить значение файлу или папке СКРЫТЫЙ или НЕ СКРЫТЫЕ, не показать клавишей CTRL+H, а именно присвоить |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Thu Apr 14, 2011 13:24 Post subject: |
|
|
Вопрос для подфорума "Автоматизация". Переносится.
Заголовок неинформативен. Редактируется.
Дальше ждём, если кто-то откликнется и предложит скрипт/батник. Для него создать пользовательскую команду, а уж для неё — клавиши. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Thu Apr 14, 2011 13:46 Post subject: |
|
|
Вахмурка
Конечно, работает.
А чего я кого-то ждать призываю, действительно?
badboy2001
Простейший вариант для двух разных клавиш.
Диалог "Выбор команды". При создании пользовательской команды а поле "Команда" указать attrib +h и в поле "Параметры" %P%N. Сохранить, например, под именем em_HideOn. Как теперь клавиши назначить, разберёмся?
Ну и вторую команду для attrib -h — соответственно. Будет, скажем, em_HideOff. Только горячая клавиша понадобится уже другая. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Apr 14, 2011 23:20 Post subject: |
|
|
Code: | @echo off &chcp 1251 >nul &setlocal enableextensions
for /f "delims=:" %%s in ('attrib "%~1"') do call :c "%~1" %2 "%%s"
goto :eof
rem Переключение атрибута файла
rem Автор: Tol!k
rem Пример параметров: %P%N r
:c
set "attr=%~3"
echo,"%attr:~0,-2%" |findstr /ic:%2 &&attrib -%2 %1 ||attrib +%2 %1
goto :eof
|
|
|
Back to top |
|
 |
ApceH

Joined: 08 Apr 2011 Posts: 316 Location: Димитровград
|
(Separately) Posted: Sat Apr 16, 2011 18:12 Post subject: |
|
|
Tol!k
Отличный скрипт! Работает со всеми атрибутами.
Но я бы в вызов attrib добавил /L — то есть работать с самой символьной ссылкой, а не с целевым файлом. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Apr 16, 2011 19:14 Post subject: |
|
|
XP ругается на недопустимый ключ и не работает. У кого Vista и новее могут дописать ключ
Code: | for /f "delims=:" %%s in ('attrib "%~1" /l') do call :c "%~1" %2 "%%s"
...
echo,"%attr:~0,-2%" |findstr /ic:%2 &&attrib -%2 %1 /l ||attrib +%2 %1 /l |
|
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Apr 26, 2011 13:45 Post subject: |
|
|
Мои 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 |
|
Back to top |
|
 |
ApceH

Joined: 08 Apr 2011 Posts: 316 Location: Димитровград
|
(Separately) Posted: Tue Apr 26, 2011 15:53 Post subject: |
|
|
Batya
Батником Tol!k-а можно и другие атрибуты править, например, Подлежит индексированию. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Apr 26, 2011 16:03 Post subject: |
|
|
ApceH
Да я и не настаиваю. Я просто предложил вариант.
Кстати, в описании скрипта исправил опечатку в значениях флага. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
|