[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何给数字前加指定字符

想请教一下,如何给数字前加HSA:  ?  非常感谢
  

如何把
D00094        HSA:5914
D00094        5915
D00094        5916
D00095        HSA:155
改成
D00094        HSA:5914
D00094        HSA:5915
D00094        HSA:5916
D00095        HSA:155

回复 11# sweet惜缘


试一试
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "tokens=1,* delims= " %%i in (NEW_DG.txt) do (
  3. set entry=%%i
  4. set target=%%j
  5. if "!target!" neq "~" (
  6. if "!target:~0,1!" equ "[" set target=!target:~1!
  7. if "!target:~-1!" equ "]" set target=!target:~,-1!
  8. if "!target:~0,3!" neq "HSA" set target=HSA:!target!
  9. if "!target: =!" neq "!target!" (
  10. for %%i in (!target!) do (
  11. set target=%%i
  12. if "!target:~0,3!" equ "HSA" (
  13. echo;!entry!       %%i
  14. ) else (
  15. echo;!entry!       HSA:%%i
  16. )
  17. )
  18. ) else (
  19. echo;!entry!       !target!
  20. )
  21. ) else (
  22. echo;!entry!       !target!
  23. )
  24. ))>222.txt
  25. pause & exit /b
复制代码

TOP

回复 4# pcl_test

非常感谢!!!!有效!!

TOP

回复 7# sweet惜缘


    4楼已改,一步到位的

TOP

本帖最后由 pcl_test 于 2016-9-14 05:02 编辑

已修改,一步到位的
1

评分人数

TOP

:'(:'(
求解答~~~~~

TOP

@pcl_test

召唤大神!!

TOP

回复 8# 回家路上


    您好!~我自己改好了~现在就只有一个问题~就是给数字前加HSA:  ?  非常感谢
    如何把
D00094        HSA:5914
D00094        5915
D00094        5916
D00095        HSA:155
改成
D00094        HSA:5914
D00094        HSA:5915
D00094        HSA:5916
D00095        HSA:155

TOP

回复 4# pcl_test


    大神~我自己改好了~现在就只有一个问题~就是给数字前加HSA:  ?  非常感谢
    如何把
D00094        HSA:5914
D00094        5915
D00094        5916
D00095        HSA:155
改成
D00094        HSA:5914
D00094        HSA:5915
D00094        HSA:5916
D00095        HSA:155

TOP

回复 8# 回家路上




    您好!能把我得到并且改好的NEW_DG.txt中target列的中括号去掉吗?把一对多的关系变成一对一?只有数字的加上hsa:?非常感谢!!!
格式改成这样的:

原本的:
D00011        [HSA:2741 2742 8001 2743]
D00058        2566
D00058        2567
D00058        2568
D00058        55879]
D00058        [HSA:2550
D00058        9568]
D00059        [HSA:1812]
D00059        [HSA:1813]
D00059        [HSA:1814]
D00059        [HSA:1815]


希望更改后的:
D00011        HSA:2741
D00011    HSA:2742
D00011    HSA:8001
D00011    HSA:2743
D00058        HSA:2566
D00058        HSA:2567
D00058        HSA:2568
D00058        HSA:55879
D00058        HSA:2550
D00058        HSA:9568
D00059        HSA:1812
D00059        HSA:1813
D00059        HSA:1814
D00059        HSA:1815

TOP

本帖最后由 回家路上 于 2015-8-4 09:40 编辑

回复 7# sweet惜缘

// 将代码中
  1. if (/^\/+/.test(str)){
  2. var m = s.match(/\[HSA:[^\]+]+\]/g);
  3. if (m){
  4. f2.WriteLine(t[0]+'      '+m);
  5. }else f2.WriteLine(t[0]+'      '+'~');
  6. }
复制代码
// 换为
  1. if (/^\/+/.test(str)){
  2. var m = s.match(/\[(HSA:[^\]+]+)\]/g);
  3. if (m){
  4. f2.WriteLine(t[0]+'      '+RegExp.$1);
  5. }else f2.WriteLine(t[0]+'      '+'~');
  6. }
复制代码

TOP

回复 4# pcl_test


    大神,您好!能把我得到并且改好的NEW_DG.txt中target列的中括号去掉吗?把一对多的关系变成一对一?只有数字的加上hsa:?非常感谢!!!
格式改成这样的:

原本的:
D00011        [HSA:2741 2742 8001 2743]
D00058        2566
D00058        2567
D00058        2568
D00058        55879]
D00058        [HSA:2550
D00058        9568]
D00059        [HSA:1812]
D00059        [HSA:1813]
D00059        [HSA:1814]
D00059        [HSA:1815]


希望更改后的:
D00011        HSA:2741
D00011    HSA:2742
D00011    HSA:8001
D00011    HSA:2743
D00058        HSA:2566
D00058        HSA:2567
D00058        HSA:2568
D00058        HSA:55879
D00058        HSA:2550
D00058        HSA:9568
D00059        HSA:1812
D00059        HSA:1813
D00059        HSA:1814
D00059        HSA:1815

TOP

本帖最后由 回家路上 于 2015-8-3 23:18 编辑

回复 5# roddy


你应该好久没登论坛了吧,这个是这一年多兴起的Bat和JS混编。
像楼主这种复杂的匹配规则,用JS确实更简便、清晰。
在论坛搜索中输入【混编】会找到相关的技术贴。

TOP

哈哈,。你回复的这个冒失跟这个不匹配吧,就算不匹配也算了,你起码把如何使用告诉LZ,用批处理脚本创建一个JS脚本。

TOP

本帖最后由 pcl_test 于 2015-8-4 11:18 编辑

保存为bat文件
  1. 1>1/* :
  2. @echo off
  3. cscript -nologo -e:jscript "%~0"
  4. echo;完成!
  5. pause & exit/b
  6. */
  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
  8. var f1 = fso.OpenTextFile(".\\drug", 1);
  9. var f2 = fso.CreateTextFile(".\\结果.txt", 2);
  10. f2.WriteLine('Entry       Target');
  11. while(!f1.AtEndOfStream) {
  12.     var str = f1.ReadLine().replace(/^\s{1,6}([A-Z]+.*)/,'$1');
  13.     if (/^ENTRY\s+/.test(str)) {
  14.         var t = str.replace(/^ENTRY\s+/,'').split(' ');
  15.         var s = '';
  16.         var def1 = '';
  17.         var def2 = '';
  18.     }
  19.     if (/^TARGET\s+/.test(str)) {
  20.         def1 = 1;
  21.         s = s+str;
  22.     }
  23.     var u = /^[A-Z]+/.test(str);
  24.     if (def1&&!u){
  25.         s = s+str;
  26.         def2 = 1;
  27.     }
  28.     if (def1&&def2&&u)def1 = '';
  29.     if (/^\/+/.test(str)){
  30.         var m = s.match(/\[HSA:[^\]]+\]/g);
  31.         if (m){
  32.             for (var i=0;i<m.length;i++) {
  33.                 var v = m[i].replace(/\[HSA:([^\]]+)\]/g, '$1').split(' ');
  34.                 for (var j=0;j<v.length;j++) {
  35.                     f2.WriteLine(t[0]+'      HSA:'+v[j]);
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }
  41. f1.Close();
  42. f2.Close();
复制代码
1

评分人数

TOP

返回列表