Ответ 1
Я думаю, вы немного сбиваете с толку, как работает findstr
. Он получает входные данные (чтобы найти вещи, а не вещи, которые нужно искать) либо в виде имени файла (шаблона), либо из stdin, но все, что вы ищете, всегда указывается в командной строке в качестве аргумента для findstr
.
findstr foo xyz.txt
находит строку foo
в файле xyz.txt
.
type meh.txt | findstr x
находит строку x
в выводе предыдущей команды (в этом случае содержимое файла meh.txt
- хорошая трата команды type
, что очень похоже на распространенное неправильное использование cat
).
Так как вы после подсчетов вместо фактических строк появляются имена макросов, я предлагаю другой подход. Это предполагает, что ваш файл, содержащий макросы, перечисляет их по одному в строке:
for /f "delims=" %x in (macros.txt) do @(echo %x: & find /c "%x" *.ss)
Цикл for
выполняет итерацию над содержимым вашего файла по-линии. Затем он начинает печатать имя, которое вы ищете, и выполняете find /c
, который фактически подсчитывает соответствующие строки.