找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26507|回复: 7

[文本处理] [已解决]批处理如何将文本的内容按指定格式进行转换

[复制链接]
发表于 2015-5-28 17:23:16 | 显示全部楼层 |阅读模式
我的问题是如何把下面的两列的代码变成数字,一个数字代表一个编码,例如:
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这种格式的,小数点后面的数字代表每发现一个新的编码则小数点后面的数字自增一。

非常感谢!!不胜感激!!
发表于 2015-5-28 18:30:21 | 显示全部楼层
本帖最后由 wankoilz 于 2015-5-28 18:32 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "tokens=1,2 delims=0,1,2,3,4,5,6,7,8,9" %%a in (NEW_GPCR-DG.txt) do (
  3.      for %%c in (%%a %%b) do (
  4.         if %%c==D (set /a D+=1&set/p=1.!D!?<nul) else (set/a DG+=1&set/p=2.!DG!?<nul)
  5.     )
  6.     echo;
  7. ))>out.txt
复制代码
 楼主| 发表于 2015-5-28 18:41:51 | 显示全部楼层
回复 2# wankoilz


    谢谢你!有效!
发表于 2015-5-28 18:42:12 | 显示全部楼层
本帖最后由 pcl_test 于 2015-5-28 19:00 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=m=0
  4. (for /f "usebackq delims=" %%a in ("NEW_GPCR-DG.txt") do (
  5. for %%b in (%%a) do (
  6. set "str=%%b"
  7. if "!str:~,2!" neq "DG" (
  8.   if not defined %%b (
  9.     set /a n+=1
  10.   set /p=1.!n!  <nul
  11.   set "%%b=1.!n!"
  12.   ) else (set /p=!%%b!  <nul)
  13. ) else (
  14.   if not defined %%b (
  15.     set /a m+=1
  16.   set /p=2.!m!  <nul
  17.   set "%%b=2.!m!"
  18.   ) else (set /p=!%%b!  <nul)
  19. ))
  20. echo;
  21. ))>"NUM_DG.txt"
  22. pause
复制代码
 楼主| 发表于 2015-5-28 18:55:04 | 显示全部楼层
回复 4# pcl_test

经测试证明,大神你的代码才是有效的!非常感激!!!
发表于 2015-5-28 19:55:44 | 显示全部楼层
  1. @set @n=0;//&cscript -nologo -e:jscript "%~0"<NEW_GPCR-DG.txt>DG.txt & pause & exit/b

  2. var i = 0, j = 0;
  3. var s = WScript.StdIn.ReadAll();
  4. s = s.replace(/D\d+/g,function(s0){return "1." + ++i});
  5. s = s.replace(/DG\d+/g,function(s0){return "2." + ++j});
  6. WScript.Echo(s)
复制代码
 楼主| 发表于 2015-6-3 10:36:05 | 显示全部楼层
回复 6# apang

求大神看看我最新的帖子~~~非常感激!!
 楼主| 发表于 2015-6-3 10:37:27 | 显示全部楼层
回复 4# pcl_test


    求大神看看我最新的帖子~~~非常感激!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 20:56 , Processed in 0.018235 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表