bat编程批量处理,按文件序号顺序提取到txt中,bat批处理

如何通过bat批量处理,按文件序号提取dat中数据合并到一个txt中,并且合并时根据txt文件名的序号升序复制。每个txt前添加一个#号和空行,最后再添加一个空行。参考了网上的例子,改不太好
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b *.dat') do (
set a=0
for /f "delims=" %%b in ('type "%%a"') do (
set /a a+=1
if !a!==1 (set m=%%b
echo #!m! >>new.txt))
for /f "usebackq skip=1 delims=" %%b in ("%%a") do echo %%b >>new.txt
echo.>>new.txt
)
pause
这个实现不了顺序提取,开头的空行也没有实现向大家请教!
图片一个是文件列表,一个是预期的结果

文件升序加上on参就行了哦(order byt name),就用dir /b /on
要生成一个空行,直接echo >> new.txt就行啊。追问

能麻烦写一下循环嘛,搞了一下午还是有问题。还有需要文档前加一个#号,感激不尽!

追答

回档前加一个#号,是什么意思?把文件名写在输出文件里?

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /on sec*.dat') do (
    echo %%a
    set a=0
    for /f "delims=" %%b in ('type "%%a"') do (
        echo %%b
        set /a a+=1
        if !a!==1 (set m=%%b
        echo # >>new.txt
        echo.>>new.txt
        echo !m! >>new.txt)
    )
    for /f "usebackq skip=1 delims=" %%b in ("%%a") do echo %%b >>new.txt
    echo.>>new.txt
)

追问

兄台写的这段是按1 10 11  12 13 14……19 20 21 22……3 4 5 6 7 8这样顺序的。#号指的就是附件图片里所给出的格式,每行前面有个#作为每个文件的分隔符,其实感觉网上的这段代码挺繁琐的,改得挺累,请问这位兄台需不需要这么多行代码呀。附图是个类似的程序。

温馨提示:答案为网友推荐,仅供参考
相似回答