因此我正在开发一个批处理文件,可以从大量的txt文件中提取某些文本行。我让它在1个文件夹中正常工作,但我需要它是递归的所以我把它改了一点,它不再输出任何文本文件
for /r %%Z in (*.as) do (
SET /a count=0
set /a non_eng=0
echo z = %%Z
pause
for /F "eol=; tokens=1,2 usebackq delims=(" %%A in ("%%Z") do (
set /a count+=1
if /i %%A==texte echo !count!=%%A(%%B
) > "%%Z.txt"
Echo Writting To File %%Z.txt
pause
if exist "%%Z" echo LC_!count! >> "%%Z.txt")
此行不再有效
)> “%% Z.txt”
但如果我将其更改为>>它工作得很好......问题每次复制文本是否加倍......
PS:我解决了这个问题,但我仍然不确定至少是什么原因引起了这个问题,我相信我应该至少在文件中输入一行正确的输出。答案 0 :(得分:0)
您的工作代码的重定向位于for
循环中,用于迭代文件,而不是读取它们的for /f
。通过这种方式,日志文件中有一个open/write/close
用于处理每个文件,其中所有回显的数据都重定向到输出文件。
但是在非工作版本中,您在for /f
处具有读取文件的重定向。现在,您对正在处理的文件的每一行都进行open/write/close
操作。并且,由于重定向为>
,因此只会将for /f
的最后一次执行保存在文件中。
避免它的最简单方法是将内部for
循环括在括号中并重定向此块
(
for /f .... %%A in (...) do (
....
)
) > "%%Z.txt"