Board logo

标题: [文本处理] 【已解决】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>1/* : www.bathome.net
  2. @echo off
  3. for %%a in ("D:/数据1/*.txt") do (
  4. cscript -nologo -e:jscript "%~0"<"%%a" >"D:/数据2/%%~nxa"
  5. )
  6. pause & exit /b */
  7. var a = WSH.StdIn.ReadLine().split(/ /)
  8. var b = WSH.StdIn.ReadLine().split(/ /)
  9. var c = []
  10. for(var i=0;i<a.length;i++){
  11. if(a[i]!==b[i]){
  12. c.push([a[i],b[i]].sort().join(' '))
  13. }
  14. }
  15. 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 编辑
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%i in ('dir /b d:\数据1\*.txt') do (
  4. set /a j=1
  5. for /f "delims=" %%a in ('type %%i') do (
  6.   set /a i=1
  7.   for %%b in (%%a) do (
  8.     set A!j!.!i!=%%b
  9.     set /a i+=1
  10.   )
  11.   set /a j+=1
  12. )
  13. set /a i-=1
  14. (for /l %%a in (1,1,!i!) do (
  15.   if "!A1.%%a!" lss "!A2.%%a!" (
  16.     echo !A1.%%a! !A2.%%a!
  17.   )else if "!A1.%%a!"=="!A2.%%a!" (
  18.     rem echo !A2.%%a! !A1.%%a!
  19.   )else (
  20.     echo !A2.%%a! !A1.%%a!
  21.   )
  22. ))>d:\数据2\%%~ni.txt
  23. )
  24. pause
复制代码
  1. 1>1/* : [url]www.bathome.net[/url]
  2. @echo off
  3. for %%a in ("D:\数据1\*.txt") do (
  4.         cscript -nologo -e:jscript "%~0"<"%%a" >"D:\数据2\%%~nxa"
  5. )
  6. pause & exit /b */
  7. var a = WSH.StdIn.ReadLine().split(/ /)
  8. var b = WSH.StdIn.ReadLine().split(/ /)
  9. var c = []
  10. for(var i=0;i<a.length;i++){
  11.         if(a[i]!=b[i]){
  12.                 c.push([a[i],b[i]].sort().join(' '))
  13.         }
  14. }
  15. WSH.Echo(c.join('\r\n'))
复制代码
好像应该是这样的。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2