批处理代码Win7输出到文件不起作用但附加它吗?

时间:2015-08-30 05:54:13

标签: batch-file file-io

因此我正在开发一个批处理文件,可以从大量的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”

但如果我将其更改为>>它工作得很好......问题每次复制文本是否加倍......

Working version (just doesn't delve into directories)

PS:我解决了这个问题,但我仍然不确定至少是什么原因引起了这个问题,我相信我应该至少在文件中输入一行正确的输出。

1 个答案:

答案 0 :(得分:0)

您的工作代码的重定向位于for循环中,用于迭代文件,而不是读取它们的for /f。通过这种方式,日志文件中有一个open/write/close用于处理每个文件,其中所有回显的数据都重定向到输出文件。

但是在非工作版本中,您在for /f处具有读取文件的重定向。现在,您对正在处理的文件的每一行都进行open/write/close操作。并且,由于重定向为>,因此只会将for /f的最后一次执行保存在文件中。

避免它的最简单方法是将内部for循环括在括号中并重定向此块

( 
    for /f .... %%A in (...) do (
        ....
    )
) >  "%%Z.txt"