Да. Труба |
перенаправляет вывод программы 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"