Tudo o que você precisa é o seguinte:
findstr /m /c:toFind *
Ele pesquisará todos os arquivos em seu diretório atual e imprimirá os nomes dos arquivos que contêm sua string de pesquisa.
Se você quiser procurar uma pasta diferente do diretório atual, então:
pushd "c:\yourPath"
findstr /m /c:toFind *
popd
Se você quiser incluir o caminho completo de cada arquivo na saída, então:
findstr /m /c:toFind "c:\yourPath\*"
A maneira correta de usar um loop FOR para iterar arquivos como você pretendia originalmente é:
for %%F in (*) do findstr /m /c:toFind "%%F"
Mas não é necessário usar o FOR para iterar os arquivos quando o FINDSTR puder iterar os arquivos por conta própria.
O comando FOR é o comando mais complicado disponível para lote. Existem muitas formas diferentes que fazem coisas completamente diferentes. Aqui estão apenas alguns:
for %%A in (file list with wildcard support) - iterate files
for /f "options" %%A in (filePath) - read and parse a file
for /f "options" %%A in ("string") - parse a string
for /f "options" %%A in ('someCommand') - parse the output of a command
Você deve ler a documentação com muito cuidado. Digite HELP FOR
ou FOR /?
no prompt de comando para obter a documentação.