标题: [文本处理] 【已解决】BAT:如何将两行数据上下对应合并 [打印本页]
作者: 思想之翼 时间: 2015-1-23 00:33 标题: 【已解决】BAT:如何将两行数据上下对应合并
本帖最后由 思想之翼 于 2015-1-28 01:07 编辑
D:/数据1/内有若干txt文本,每个文本内有两行数据,格式如下:
06 09 08 07 05 03 02 04 10 01
08 06 09 05 03 02 04 07 10 01
欲将这两行数据上下对应合并,并满足如下条件:
1、上下两位置数据相同的,舍弃
2、上下两位置数据不同的,合并,且按从小到大排序
上例,两行数据上下对应合并后,写成如下格式:
06 08
06 09
08 09
05 07
03 05
02 03
02 04
04 07
将上述结果写入D:/数据2/
这样的代码如何写?恳望得到帮助。
作者: CrLf 时间: 2015-1-23 06:48
- 1>1/* : www.bathome.net
- @echo off
- for %%a in ("D:/数据1/*.txt") do (
- cscript -nologo -e:jscript "%~0"<"%%a" >"D:/数据2/%%~nxa"
- )
- pause & exit /b */
-
- var a = WSH.StdIn.ReadLine().split(/ /)
- var b = WSH.StdIn.ReadLine().split(/ /)
- var c = []
-
- for(var i=0;i<a.length;i++){
- if(a[i]!==b[i]){
- c.push([a[i],b[i]].sort().join(' '))
- }
- }
-
- WSH.Echo(c.join('\r\n'))
复制代码
作者: 思想之翼 时间: 2015-1-23 08:54
回复 2# CrLf
感谢关注。
为什么代码运行时,出现“系统找不到指定的文件”?
作者: CrLf 时间: 2015-1-23 15:50
因为文件夹未创建
for 前面加一个 md "D:/数据2"
作者: yiwuyun 时间: 2015-1-23 22:14
本帖最后由 yiwuyun 于 2015-1-23 22:15 编辑
- @echo off
- setlocal EnableDelayedExpansion
-
- for /f "delims=" %%i in ('dir /b d:\数据1\*.txt') do (
- set /a j=1
- for /f "delims=" %%a in ('type %%i') do (
- set /a i=1
- for %%b in (%%a) do (
- set A!j!.!i!=%%b
- set /a i+=1
- )
- set /a j+=1
- )
- set /a i-=1
- (for /l %%a in (1,1,!i!) do (
- if "!A1.%%a!" lss "!A2.%%a!" (
- echo !A1.%%a! !A2.%%a!
- )else if "!A1.%%a!"=="!A2.%%a!" (
- rem echo !A2.%%a! !A1.%%a!
- )else (
- echo !A2.%%a! !A1.%%a!
- )
- ))>d:\数据2\%%~ni.txt
- )
- pause
复制代码
- 1>1/* : [url]www.bathome.net[/url]
- @echo off
- for %%a in ("D:\数据1\*.txt") do (
- cscript -nologo -e:jscript "%~0"<"%%a" >"D:\数据2\%%~nxa"
- )
- pause & exit /b */
-
- var a = WSH.StdIn.ReadLine().split(/ /)
- var b = WSH.StdIn.ReadLine().split(/ /)
- var c = []
-
- for(var i=0;i<a.length;i++){
- if(a[i]!=b[i]){
- c.push([a[i],b[i]].sort().join(' '))
- }
- }
-
- WSH.Echo(c.join('\r\n'))
复制代码
好像应该是这样的。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |