У меня был вирус или что-то на моем компьютере, которое устанавливало атрибуты для всех папок в корне моего внешнего диска на системные и скрытые, и создавало для них ярлыки. Сейчас я пытаюсь удалить все эти атрибуты одновременно с помощью следующей команды, но она ничего не делает:

dir /ash /b | attrib -h -s

Согласно моему пониманию документации этих команд, это должно работать. Здесь что-то не так?

Спасибо

2 ответа2

1

Да. Труба | перенаправляет вывод программы 1 на вход программы 2. Однако ваша программа 2 - attrib - не читает никаких данных. Это было написано не для этого. Вместо этого он ожидает имена файлов в командной строке.

Большинство Unix- систем имеют инструмент под названием xargs для обработки таких случаев преобразования ввода текста в аргументы командной строки. (Большинство Unix-систем также имеют инструмент под названием find для обработки этого конкретного случая также рекурсивного применения команды. (Большинство Unix-систем также имеют команду chmod которая также имеет опцию "рекурсивный режим", но я думаю, что здесь это не имеет большого значения.))

В Windows без xargs вам придется сделать что-то вроде:

for/f "tokens=*" %f in ('dir/b/ash') do @attrib -r -h -s "%~f"

Или, может быть:

for/r . %f in (*) do @attrib -r -h -s "%~f"
1

На самом деле вы можете сделать это гораздо проще

attrib e:\*.* -s -h /s

Удалит все системные и скрытые атрибуты, начиная с корня диска e: и всех его подкаталогов.

/s указывает на атрибут для подкаталогов процесса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .