标题: [文本处理] 批处理如何将多个以数字命名的txt文本按文件名递增顺序进行行行对应合并 [打印本页]
作者: fx_12m 时间: 2016-9-29 02:28 标题: 批处理如何将多个以数字命名的txt文本按文件名递增顺序进行行行对应合并
本帖最后由 pcl_test 于 2016-9-29 07:45 编辑
老师们求赐教txt文档按数字序列文件名进行合并方法
我这里有上万个txt文档,命名规则是1.txt,2.txt...,举例如下:
1.txt 2.txt
step data step data
1 0.1 1 0.2
2 0.3 2 0.4
3 0.5 3 0.6
我希望的结果是:
all.txt
step data step data
1 0.1 1 0.2
2 0.3 2 0.4
3 0.5 3 0.6
论坛里面有关于类似的合并方法,但是合并的排序方式是1,10,11,12……19,2,20,21……这种。我想要的合并排序是按照自然数序列,也就是1,2,3,……这种。求各位老师不吝赐教,感激不尽。把第一种排序合并的方式放在下面:
@echo off&setlocal enabledelayedexpansion
if exist merge.txt del merge.txt
for /f "delims=" %%i in ('dir/b/a-d/on *.txt')do (set "n=0"
for /f "delims=" %%j in ('type "%%i"')do (
set/a n+=1&call set "#!n!=%%#!n!%%%%j "))
:re
set/a n+=1
if defined #!n! goto re
set/a n-=1
(for /L %%h in (1,1,%n%)do set #%%h=!#%%h:~,-1!&echo.!#%%h!)>merge.txt
start merge.txt
作者: codegay 时间: 2016-9-29 04:16
文件多大,行数有多少,文件的行数是是否都一样。这个信息挺关键的。如果文件小。用python之类的语言一次性读进内存再进行合并处理,逻辑会很简单。
作者: 诗歌王位 时间: 2016-9-29 08:08
如果是批的话,一般都有性能限制的,你这上万个具体是多少个?
作者: fx_12m 时间: 2016-9-29 08:19
回复 2# codegay
每个txt文件是由两列构成,单独一个txt文本的行数不超过1000行,每500个txt的行数都是一样的,所以可以分组来合并。老师求指点如何按照自然数序列进行合并吧,非常感谢
作者: fx_12m 时间: 2016-9-29 08:19
回复 3# 诗歌王位
可以分成每组500个文本进行合并,希望老师能指点一下
作者: codegay 时间: 2016-9-29 08:35
生成1。。500拼成文件名就好了。不用排序
作者: pcl_test 时间: 2016-9-29 09:01
本帖最后由 pcl_test 于 2016-9-29 09:02 编辑
1、第三方sort http://www.bathome.net/s/tool/index.html?key=sort复制代码
2、powershell- powershell -c "dir [0-9]*.txt|sort {[int]$_.basename}|%%{$_.name}"
复制代码
3、先统一文件名位数,如000001.txt、000002.txt、000003.txt……
作者: hlzj88 时间: 2016-9-30 06:01
本帖最后由 hlzj88 于 2016-9-30 06:11 编辑
我处理这个问题采用的方法是 文件名+1000000000,然后type
你这个问题可能是 不仅文件名要按顺序,而且内容也要按顺序,后面的我搞会麻烦些,没有时间。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |