Board logo

标题: [文本处理] 【已解决】批处理如何将一对多的关系变成一对一的? [打印本页]

作者: sweet惜缘    时间: 2015-5-28 15:04     标题: 【已解决】批处理如何将一对多的关系变成一对一的?

DG中的文件类似于
ENTRY        Drug group
D00049        DG00282
D00059        DG01467,DG01468,DG01469,DG01470,DG01471,DG01592
D00079        DG00448
D00094        DG00433
D00095        DG00013
D00106        DG00157
D00110        DG00808         
D00113        DG00052
D00136        DG00885
D00139        DG01525,DG01634,DG01638
D00180        DG00239
D00225        DG01522,DG01567,DG01633
D00227        DG01062
D00232        DG01491
D00234        DG01482,DG01633
D00235        DG01461,DG01644,DG01806


我想让他经过处理后得到一对一的关系如下:
D00049        DG00282
D00059        DG01467
D00059        DG01468
D00059        DG01469
D00059        DG01470
D00059        DG01471
D00059        DG01592
D00079        DG00448
D00094        DG00433
D00095        DG00013
D00106        DG00157
D00110        DG00808
D00113        DG00052
D00136        DG00885
D00139        DG01525
D00139        DG01634
D00139        DG01638
D00180        DG00239
D00225        DG01522
D00225        DG01567
D00225        DG01633
D00227        DG01062
D00232        DG01491
D00234        DG01482
D00234        DG01633

谢谢大神!求指点!
作者: pcl_test    时间: 2015-5-28 16:08

本帖最后由 pcl_test 于 2015-5-28 16:17 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "usebackq tokens=1*" %%a in ("DG.txt") do (
  3. set "str=%%b"
  4. set "str=!str:,=!"
  5. if "%%b" equ "!str!" (
  6. echo;%%a %%b
  7. ) else (
  8. for %%i in (%%b) do echo;%%a %%i)))>"NEW_DG.txt"
  9. pause
复制代码

作者: sweet惜缘    时间: 2015-5-28 17:05

回复 2# pcl_test


您好!!代码很有效!
现在有个问题还想请您帮忙解答一下
能否把上面的两列的代码变成数字,一个数字代表一个编码,例如:
D00049        DG00282
D00059        DG01467
D00059        DG01468
D00059        DG01469
D00059        DG01470
D00059        DG01471
DG01592       DG01470
改变后可能就是
1.1                 2.1
1.2                 2.2
1.2                 2.3
1.2                 2.4
1.2                 2.5
1.2                 2.6
2.7                 2.5
1代表格式为D+number这种格式的,2代表格式为DG+number这种格式的,小数点后面的数字代表每发现一个新的编码则小数点后面的数字自增一。

非常感谢!!不胜感激!!




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