将文本文件列表循环到同一目录中并找到"关键字"在txt文件中(批处理脚本)

时间:2017-04-03 07:25:10

标签: loops batch-file scripting

我想创建一个脚本,循环遍历同一目录中的所有.txt个文件并搜索keyword

如果找到keyword,请将filename.txtkeyword found回显到temp.txt
否则将filename.txtkeyword not found回显到temp.txt

当前代码:

for /r D:\Users\hi\Documents\bat_for_random %%X in (*.txt) 
findstr "HELLO KEYWORD " %%X &&
(
echo "keyword found" %%X  >temp.txt
)
|| (
echo "keyword not found" %%X  >temp.txt
)
pause

2 个答案:

答案 0 :(得分:2)

您的for语法错误,缺少do关键字。此外,您错误地放置了&& / ||和括号,您需要将它们放在一行中。最后,每次循环迭代时,重定向运算符>都会覆盖文本文件temp.txt;使用>>代替将附加到文本文件;或者,更好的是,您可以仅重定向一次所有行。所以这是改进的代码:

> "temp.txt" (
    for /R "D:\Users\hi\Documents\bat_for_random" %%X in ("*.txt") do (
        > nul findstr /C:"HELLO KEYWORD " "%%~X" && (
            echo keyword found "%%~nxX"
        ) || (
            echo keyword not found "%%~nxX"
        )
    )
)

答案 1 :(得分:0)

没有必要有两个列表,一个包含匹配,一个不包含匹配。在现实世界中,你需要一个或另一个。

要获得具有字符串匹配的文件列表,请使用单个命令行(不需要For循环等)。

FindStr/SMC:"HELLO KEYWORD " "D:\Users\hi\Documents\bat_for_random\*.txt">"temp.txt"