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

[文本处理] [已解决]批处理如何删除文本里字符串与逗号间的空格?

比如说我有一个文本文件,里面的内容如下:
abc def ghi          ,ghig def ate    ,fdsfdsifsdsa
gad  eft adfsd      ,     dsa   fdsa   ,    fdjoyolkok     ,ffdsafdsl

我想删除字符串与逗号间的空格得到如下结果:
abc def ghi,ghig def ate,fdsfdsifsdsa
gad  eft adfsd,     dsa   fdsa,    fdjoyolko,ffdsafdsl

注:字符串内的空格不删除,字符串与逗号间有多少空格不定,每行有多少个逗号也不定

另注:我不想用其它工具,只想用Windows内部命令来实现

[ 本帖最后由 xparlyn 于 2009-12-18 22:24 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

先在本论坛搜索SED,下载,放到c:\windows\,使用以下代码:

  1. @echo off
  2. sed "s/\s*,/,/g" test.txt
  3. pause>nul
复制代码

TOP

回复 2楼 的帖子

我不想用其它工具,只想用Windows内部命令来实现

[ 本帖最后由 xparlyn 于 2009-12-17 23:42 编辑 ]

TOP

  1. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('2.txt',2,true).Write(fso.OpenTextFile('1.txt').ReadAll().replace(/\s*,\s*/g,','));"
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. Set objFile = objFSO.OpenTextFile("test.txt", 1)
  3. colLines = objFile.ReadAll
  4. objFile.Close
  5. Set objRegEx = CreateObject("VBScript.RegExp")
  6. objRegEx.Global = True
  7. objRegEx.IgnoreCase = True
  8. objRegEx.Pattern = "\s*,"
  9. colLines = objRegEx.Replace(colLines, ",")
  10. Set objFile = objFSO.OpenTextFile("test.txt", 2)
  11. objFile.Write colLines
  12. objFile.Close
  13. Set   objFSO = Nothing
  14. Set objRegEx = Nothing
复制代码

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. :hanye
  3. set n=0&set a=a.txt
  4. for /f "delims=" %%i in ('Findstr /n ".*" %a%') do (set i=%%i
  5. set i=!i:*:=!
  6. echo !i: ,=,!)>>gu.xing
  7. del /q %a%
  8. ren gu.xing %a%
  9. Findstr /c:" ," %a% >nul&&set n=1
  10. if %n% == 1 (goto hanye) else echo 操作完成!&pause
复制代码
这是在别处找到的,这才是我想要的,不过还是谢谢各位了

TOP

回复 6楼 的帖子

CN-DOS找来的吧?
为什么4楼的不是你想要的呢?哪里不满足要求呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

用到javascript,这点不是我想要的

TOP

不过我找到的那个方法在处理大文件的时候效率很慢,这点不爽
文件里有1万多的空格的话就慢的要死了...

TOP

回复 8楼 的帖子

但它还是批处理啊,效率又高,还不需要临时文件,何乐而不为呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我的效率不知道怎么样?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.      set "v=%%i"
  4.      for /l %%i in (1 1 80) do (
  5.        set "v=!v: ,=,!"
  6.     )
  7.     echo !v!
  8. )
复制代码

TOP

vbs是个好东西。

逐行扫描,然后字符串替换

!a: ,=,!

就是不知道的逗号之前有多少个空格……

TOP

返回列表