[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】BAT或VBS:如何将多个文本内的数据进行平行合并

本帖最后由 思想之翼 于 2015-3-6 21:46 编辑

D:/数据1/内有若干txt文本:
001_1.txt
001_2.txt
002_1.txt
002_2.txt
...
210_1.txt
210_2.txt
每个txt文本内有多行数据,行数相同,每行数据在0-9之间,个数不定
比如:
12678
024
03479
0256

欲将多个文本内数据进行平行合并,具体过程如下(只需要最后的结果,分步过程不需显示):
先将001_1.txt与001_2.txt内的数据进行平行合并,过程为:
001_1.txt内第1行数据与001_2.txt内的第1行合并
001_1.txt内第2行数据与001_2.txt内的第2行合并
...
001_1.txt内最后一行数据与001_2.txt内的最后一行合并

合并后,每行数据取反集(0-9数值之间的未出现数),然后在各行数据中找出不重复的3位数(舍弃大于、小于3位数的数据),并从小到大排列(数据0永远排列在最后一位)。比如:
125457990的反集是:368
3664567389的反集是:120
将这些数据竖排,写入D:/数据2/内的文本,文本名称为001.txt
若没有不重复的3位数,则写入D:/数据2/内的文本数据为空。

以上是001_1.txt与001_2.txt的合并。之后,
将002_1.txt与002_2.txt合并,得到的数据,竖排,写入D:/数据2/内,文本名称为002.txt
将003_1.txt与003_2.txt合并,得到的数据,竖排,写入D:/数据2/内,文本名称为003.txt
...
将210_1.txt与210_2.txt合并,得到的数据,竖排,写入D:/数据2/内,文本名称为210.txt


这样的代码如何写?恳望得到帮助。

本帖最后由 pcl_test 于 2015-3-5 01:54 编辑

回复 3# 思想之翼
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\数据1\"
  4. if not exist "D:\数据2\" md "D:\数据2\"
  5. for %%a in (*_1.txt) do (
  6.   set "fn=%%~na"
  7.   set "fn=!fn:~,-1!"
  8.   if exist "!fn!2.txt" (
  9.           for /f "delims=" %%b in ('type "%%a"') do (
  10.           set /p str=
  11.           echo,%%b!str!
  12.           )
  13.   )<"!fn!2.txt">"D:\数据2\!fn:~,-1!.t"
  14. )
  15. cd /d "D:\数据2\"
  16. for %%a in (*.t) do (
  17. cd.>"%%~na"
  18. for /f "delims=" %%b in ('type "%%a"') do (
  19. >$ echo,%%b
  20. set s=
  21. for %%c in (1 2 3 4 5 6 7 8 9 0) do (
  22. findstr "%%c" $ >nul || set "s=!s!%%c"
  23. )
  24. if not "!s:~2,1!" == "" if "!s:~3,1!" == "" (
  25. findstr "!s!" "%%~na" >nul || >>"%%~na" echo,!s!
  26. )
  27. del $
  28. )
  29. ren "%%~na" "%%~na.txt"
  30. )
  31. del *.t
  32. pause
复制代码
1

评分人数

TOP

本帖最后由 思想之翼 于 2015-3-5 00:41 编辑

回复 2# pcl_test

感谢关注。
行数固定,各文本数据可以都是100行,也可以都是120行,若代码中需要确定行数,可写100,事后可以根据运用情况进行修改。

TOP

回复 1# 思想之翼
行数相同的话,行数是多少?

TOP

返回列表