标题: [文本处理] 批处理将多个文本第二列内容行行对应合并成一行并在首行添加每个文本相应的文件名 [打印本页]
作者: newbat123 时间: 2016-12-6 13:33 标题: 批处理将多个文本第二列内容行行对应合并成一行并在首行添加每个文本相应的文件名
批处理提取多个文本文件第二列数据并合并在一个文本里同时把所有的文本文件名字合并为新文本的第一列
一个主文件夹里有多个子文件夹,各个子文件夹里有多个文本文件,每个文本文件里有两列数据,先需要批处理将每个子文件夹里的文本文件的第二列数据提取出来各并,并将该子文件夹里的所有文本文件名插入到第一列
如:一个子文件夹里的文本文件的其中2个文本数据a,b
a.txt b.txt a b
1 2 1 3 2 3
2 1 2 4 1 4
3 6 3 4 6 4
4 6 4 6 6 6
5 3 5 7 最终结果: 3 7
6 5 6 3 5 3
7 8 7 2 8 2
作者: Nsqs 时间: 2016-12-7 11:23
- :on error resume next
- :sub class_bat
- echo off&cls
- cscript -nologo -e:vbs "%~0"
- pause
- exit sub
- :end sub
- dim file(1),list(1),result(1)
- set fso=createobject("scripting.filesystemobject")
- set regexp=new regexp
- File(0)="1.txt"
- File(1)="2.txt"
- regexp.global=-1:regexp.ignorecase=-1
- regexp.pattern="[\u4e00-\u9fff0\w]* *([\u4e00-\u9fff0\w]*)"
- for i=0 to 1
- read=fso.opentextfile(File(i)).readall
- list(i)=RegExp.Replace(read,"$1")
- result(i)=split(list(i),vbcrlf)
- next
- redim s(ubound(result(0)))
- for j=0 to ubound(result(0))
- s(j)=result(0)(j)&chr(32)&result(1)(j)
- next
- change=join(s,vbcrlf)
- wsh.echo "演示结果:"
- fso.createtextfile("new_result.txt").write change
- wsh.echo change
- set fso=nothing:set regexp=nothing
复制代码
作者: newbat123 时间: 2016-12-7 19:25
回复 2# Nsqs
说: 1>Microsoft VBScript 编译器错误:无效字符
并且子文件里面不是只有两个文件 是有几百个文件呢
作者: pcl_test 时间: 2016-12-7 23:20
本帖最后由 pcl_test 于 2016-12-7 23:21 编辑
- @echo off
- for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
- if not defined f (
- (echo;%%~na&for /f "tokens=2" %%b in ('type "%%a"') do echo;%%b)>"合并.log"
- set f=1
- ) else (
- setlocal enabledelayedexpansion
- (
- set /p str=
- echo;!str! %%~na
- for /f "tokens=2" %%b in ('type "%%a"') do (
- set /p str=
- echo;!str! %%b
- )
- )<"合并.log">"tmp.log"
- endlocal
- move /y "tmp.log" "合并.log"
- )
- )
- pause
复制代码
作者: Nsqs 时间: 2016-12-8 07:00
回复 3# newbat123
这个错误不用管它,正常的
作者: newbat123 时间: 2016-12-8 11:46
回复 4# pcl_test
我重新添加了附件结果,麻烦大神帮忙看一下,谢谢
作者: newbat123 时间: 2016-12-8 11:47
回复 5# Nsqs
但是没有出结果,我上传了个新的压缩包,解释需要的结果
作者: newbat123 时间: 2016-12-13 18:17
回复 4# pcl_test
就是相当于把第二列提取出来竖着合并
作者: newbat123 时间: 2016-12-13 18:18
本帖最后由 newbat123 于 2016-12-13 18:19 编辑
就是相当于把第二列提取出来竖着合并
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |