Причина, по которой он не работает, заключается в том, что attrib +r
делает обработанные токены снова доступными только для чтения, а также потому, что вы используете заглавные% G, где вы должны использовать маленькие буквы.
В Windows файлы только для чтения отличаютсяиз Linux таким образом, что вы либо помечаете файл как доступный только для чтения, либо нет.Если он не только для чтения, он будет использовать свойства, найденные в ACL для папки / файла.Обычно он генерирует файл RW вместо Read-Only.
Подробнее об этом можно прочитать здесь:
http://msdn.microsoft.com/en-us/magazine/cc982153.aspx
Итак, на ваш вопрос:
for /f %f in ('dir .*.* /s /a-D /ar') DO "ATTRIB -R" "%g"
(Поскольку у меня нет файлов или папок с префиксом. Я не могу проверить и посмотреть, работает ли вышеприведенное, возможно, вы захотите использовать% f вместо% g, в зависимости от того, какой токен вы хотите использовать.)
Приведенное выше будет делать attrib -r
, который удаляет атрибут только для чтения.
Возможно, вы захотите использовать двойной %% для пакетных сценариев, которые должны выполняться как .bat, .cmdи т. д.
Как указано в справочном экране for /?
:
"Чтобы использовать команду FOR в пакетной программе, укажите %% variable вместо% variable."
Более подробно:
"Имена переменных чувствительны к регистру, поэтому% i отличается от% I."