Se você quer algo que você pode fazer no menu de contexto, aqui está uma maneira que pode poupar algum tempo se você estiver tentando fazer isso bastante:
Crie um arquivo de lote RemoveSysAttrib.bat
@echo off
attrib -s "%1%"
Em seguida, siga este guia para adicionar um aplicativo personalizado ao menu de contexto: Como adicionar qualquer aplicativo ao menu do Windows Desktop com o botão direito do mouse
Você poderia então ter um item de menu chamado "Remover atributo do sistema", que faz exatamente isso, usando o arquivo de lote. Dessa forma, você também pode criar um script para adicionar o atributo de volta. Pode ser um pouco complicado fazer com que funcione para várias seleções de arquivos, mas com um pouco de sorte, ele lançará seu arquivo uma vez para cada item selecionado. Você vai querer testar isso com:
@echo off
echo %1%
pause
Se ele fornecer os nomes dos arquivos como atributo 1, 2, 3, etc, você terá que percorrer todos os parâmetros. Se mais de um parâmetro for fornecido, você poderia invocar seu script recursivamente assim:
if NOT "%2%"=="" (
for %%A in (%*) do (
RemoveSysAttrib.bat "%%A"
)
) else (
attrib -s "%1%"
)
Espero que ajude =)
Em resposta aos comentários da Synetech:
When you use
attrib
, it won’t change theH
orS
settings if the other is set (it will say not resetting XXXX file). You would need to strip (or set) both, then change the one that you did not want to modify back to what it was before.
Eu estendi o script para verificar o atributo 'H' relatado pelo comando attrib
do Windows 7. Para torná-lo mais genérico, você precisaria verificar mais posições de substring, pois tenho um palpite de que é diferente em outras versões. Não tenho outras versões do Windows disponíveis no momento, por isso não posso verificar.
@echo off
setlocal enabledelayedexpansion
:: Check if file is hidden - works on Windows 7
set hidden=0
for /f "delims=" %%A in ('attrib "%1%"') do (
set attr=%%A
if "!attr:~4,1!"=="H" set hidden=1
)
:: If file is hidden, remove both attributes, then hide again.
if %hidden%==1 (
attrib -S -H "%1%"
attrib +H "%1%"
) else (
attrib -S "%1%"
)
endlocal