批处理 for 加 find 命令
目录下有个1.txt文件,内容是春天在哪里。这是我自己搞的,总是不对,请指教for/f"delims="%%iin('find"春天"*.txt')do@echo%%i用...
目录下有个1.txt文件,内容是 春天在哪里。
这是我自己搞的,总是不对,请指教
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i
用这个执行结果,
---------- 1.txt
春天在哪里
怎么会多一个--------- 1.txt的文件名呢,find命令的这个文件名有问题吧,多出十个-,如果我不要文件名显示怎么办呢?
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i>>%%~ni.txt
用这个执行会多出两个文件一个---------- 1.txt,内容也是---------- 1.txt
另一个是 春天在哪里.txt,内容也是春天在哪里。
我想要的是这样,最后输出的文件名是1.txt,也就是原文件名输出到另个文件夹,内容是春天在哪里,怎么改呢?
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i|find "春天"
显示是可以了,但我想把结果写入文件名与*.txt相同的文件,后面加>>%%ni.txt就没有用了,怎么办呢? 展开
这是我自己搞的,总是不对,请指教
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i
用这个执行结果,
---------- 1.txt
春天在哪里
怎么会多一个--------- 1.txt的文件名呢,find命令的这个文件名有问题吧,多出十个-,如果我不要文件名显示怎么办呢?
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i>>%%~ni.txt
用这个执行会多出两个文件一个---------- 1.txt,内容也是---------- 1.txt
另一个是 春天在哪里.txt,内容也是春天在哪里。
我想要的是这样,最后输出的文件名是1.txt,也就是原文件名输出到另个文件夹,内容是春天在哪里,怎么改呢?
for /f "delims=" %%i in ('find "春天" *.txt') do @echo %%i|find "春天"
显示是可以了,但我想把结果写入文件名与*.txt相同的文件,后面加>>%%ni.txt就没有用了,怎么办呢? 展开
4个回答
展开全部
既然不是象有人提问为了解决某一实际问题而是在练习批处理或者说命令,我就不就具体写这代码了,对于for /f 命令,既然in后面的集是一个命令形成的,那么,你应当在命令行把这个命令输出看一看比如 find "春天" *.txt 看它显示的是什么结果。
对for /f而言,最终是按in后面的括号里形成的文本(无论是命令集、文件集,还是字符串集;也无论是单行的还是多行的)总是按这文本每行执行一次do后面的命令的,如果无法实现你预期结果,那就或是改变前面in集的内容,或是改变do后的命令,总之是要熟悉可能用到的命令才能在for命令里把它顺利实现。
所以,如要用的命令没把握,就应当在命令行,单独去体验这命令,这样分解开来测试没问题了,组合到for命令里也就水到渠成了。另外建议到网上多看些实例。
对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
问题补充所说的,>>%%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 "春天"
>>%%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 "春天"
那是告诉你是在那个文件里面找到的,
避免该方法可以这样操作:即重新再找一次"春天",写入文件后就没有--------1.txt
for /f "delims=" %%i in ('find "春天" *.txt') do echo %%i|find "春天"
参考资料: 自己的脑袋
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询