标题: [文本处理] 【已解决】BAT或VBS:如何将多个文本内的数据进行平行合并 [打印本页]
作者: 思想之翼 时间: 2015-3-4 23:40 标题: 【已解决】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-4 23:56
回复 1# 思想之翼
行数相同的话,行数是多少?
作者: 思想之翼 时间: 2015-3-5 00:34
本帖最后由 思想之翼 于 2015-3-5 00:41 编辑
回复 2# pcl_test
感谢关注。
行数固定,各文本数据可以都是100行,也可以都是120行,若代码中需要确定行数,可写100,事后可以根据运用情况进行修改。
作者: pcl_test 时间: 2015-3-5 01:31
本帖最后由 pcl_test 于 2015-3-5 01:54 编辑
回复 3# 思想之翼 - @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\数据1\"
- if not exist "D:\数据2\" md "D:\数据2\"
- for %%a in (*_1.txt) do (
- set "fn=%%~na"
- set "fn=!fn:~,-1!"
- if exist "!fn!2.txt" (
- for /f "delims=" %%b in ('type "%%a"') do (
- set /p str=
- echo,%%b!str!
- )
- )<"!fn!2.txt">"D:\数据2\!fn:~,-1!.t"
- )
-
- cd /d "D:\数据2\"
- for %%a in (*.t) do (
- cd.>"%%~na"
- for /f "delims=" %%b in ('type "%%a"') do (
- >$ echo,%%b
- set s=
- for %%c in (1 2 3 4 5 6 7 8 9 0) do (
- findstr "%%c" $ >nul || set "s=!s!%%c"
- )
- if not "!s:~2,1!" == "" if "!s:~3,1!" == "" (
- findstr "!s!" "%%~na" >nul || >>"%%~na" echo,!s!
- )
- del $
- )
- ren "%%~na" "%%~na.txt"
- )
- del *.t
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |