REWRITE Благодаря @Compo и сообщению от dbenham ({ ссылка }), это полностью переписано. Он очень жестко задан для указания c позиций символов, что не очень хорошая идея.
Когда выяснится, что в правильных каталогах будут выполняться правильные команды ATTRIB
, удалите echo
из команда ATTRIB
.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%A IN ('DIR /B /A:H') DO (
FOR /F "delims=" %%B in ("%%~aA") DO (
SET ATTRS=%%~B
if "!ATTRS:~0,1!" == "d" if "!ATTRS:~3,2!" == "hs" (
echo ATTRIB -H -S %%~A
)
)
)
Это было бы гораздо лучше сделать в PowerShell. Для этого потребуется текущий PowerShell 5.x или выше. На самом деле ...
Get-ChildItem -Directory -Hidden -System |
ForEach-Object {
$_.Attributes -= 'Hidden'
$_.Attributes -= 'System'
}