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

[文本处理] 【已解决】批处理如何将两字符串之间的空格变为逗号?

[复制链接]
发表于 2016-1-6 16:22:35 | 显示全部楼层 |阅读模式
我的$NR.txt文件内容如下:
DB00175        BE0000574                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00177        BE0000062                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00178        BE0000221                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00190        BE0002151                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00191        BE0000486        BE0000749        BE0000647        BE0002198        BE0002196                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00193        BE0000770        BE0000486        BE0000749        BE0000533        BE0000632        BE0000420        BE0000641

希望经过处理后的out.txt内容如下(第一列与第二列之间的空格不动,行与行之间的空格也不动)

DB00175        BE0000574                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00177        BE0000062                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00178        BE0000221                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00190        BE0002151                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00191        BE0000486,BE0000749,BE0000647,BE0002198,BE0002196                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
DB00193        BE0000770,BE0000486,BE0000749,BE0000533,BE0000632,BE0000420

自己看了好一会正则表达式~只能实现全部转化,批处理水平实在太低啦,求大神解答~~~灰常感谢
发表于 2016-1-6 17:47:04 | 显示全部楼层
你这个文件行与行之间没有空格,你看到的“空格”实际上是每一行的行尾有大量的tab导致编辑器在显示的时候换行了,你确定一下是否需要保留行尾的那么多tab吧。
发表于 2016-1-6 17:49:14 | 显示全部楼层
本帖最后由 CrLf 于 2016-1-6 20:04 编辑
  1. @mshta http://bathome.net/s/hta/^
  2.   type('$NR.txt')^
  3.   .split('\r\n')^
  4.   ._EACH(function(s){flag=0;return s.replace(/\s+(?=\w)/g,function(ss){return flag++?',':' '})})^
  5.   .join('\r\n')^
  6.   >$NR.new.txt
复制代码
 楼主| 发表于 2016-1-6 18:18:26 | 显示全部楼层
回复 3# CrLf


    。。。结果出来没有变化,是哪里出现问题了呢??感谢
 楼主| 发表于 2016-1-6 18:22:05 | 显示全部楼层
回复 2# gawk


额,原来是这样~~我只需要保证每一行还是一行~不要处理后170+行变成一行就郁闷了~~~请问大神应该怎么做~~~
发表于 2016-1-6 20:05:33 | 显示全部楼层
回复 4# sweet惜缘


    之前没看你的文件,只按顶楼的空格处理,所以没效果,已修改
发表于 2016-1-6 20:34:50 | 显示全部楼层
本帖最后由 pcl_test 于 2016-1-6 20:43 编辑
  1. //&cls&cscript -nologo -e:jscript "%~f0"<$NR.txt>New_$NR.txt&pause & exit/b

  2. while(!WScript.StdIn.AtEndOfStream) {
  3.     var str = WScript.StdIn.ReadLine().replace(/(\w+)\s+(.+?)\s*$/,function($0,$1,$2){
  4.         return $1+' '+$2.replace(/\s+(?=\w)/g,',')
  5.     });
  6.     WSH.Echo(str);
  7. }
复制代码
 楼主| 发表于 2016-1-6 21:40:00 | 显示全部楼层
回复 7# pcl_test


    感谢大神~~~已解决~~~能否帮我看一下最新的那个提问~~~~灰常感谢~~
  

PS:你哪人~请你吃饭吧~~if 你在西安的话~~~
 楼主| 发表于 2016-1-6 21:40:18 | 显示全部楼层
回复 6# CrLf


    感谢~~~辛苦啦~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:30 , Processed in 0.018329 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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