既然不是象有人提问为了解决某一实际问题而是在练习批处理或者说命令,我就不就具体写这代码了,对于for /f 命令,既然in后面的集是一个命令形成的,那么,你应当在命令行把这个命令输出看一看比如 find "春天" *.txt 看它显示的是什么结果。
对for /f而言,最终是按in后面的括号里形成的文本(无论是命令集、文件集,还是字符串集;也无论是单行的还是多行的)总是按这文本每行执行一次do后面的命令的,如果无法实现你预期结果,那就或是改变前面in集的内容,或是改变do后的命令,总之是要熟悉可能用到的命令才能在for命令里把它顺利实现。
所以,如要用的命令没把握,就应当在命令行,单独去体验这命令,这样分解开来测试没问题了,组合到for命令里也就水到渠成了。另外建议到网上多看些实例。
问题中的情况是find指出了所找字符串的出处,因为用的是*.txt
问题补充所说的,>>%%ni.txt是在原文件内容末尾添加
楼主看下1.txt,里面的内容应该是两句 春天在哪里
下面是我写的显示没问题的批处理
--------------------------------------------------------
@echo off
for %%i in (*.txt) do findstr "春天" "%%i"
echo.
pause
find指出了所找字符串的出处,因为用的是*.txt
>>%%ni.txt是在原文件内容末尾添加
find命令的这个文件名没有有问题
避免该方法可以这样操作:即重新再找一次"春天",写入文件后就没有--------1.txt
for /f "delims=" %%i in ('find "春天" *.txt') do echo %%i|find "春天"
find命令的这个文件名没有有问题
那是告诉你是在那个文件里面找到的,
避免该方法可以这样操作:即重新再找一次"春天",写入文件后就没有--------1.txt
for /f "delims=" %%i in ('find "春天" *.txt') do echo %%i|find "春天"