Board logo

标题: [文本处理] 如何用命令处理某行后面或前面的空格! [打印本页]

作者: jellyhk    时间: 2008-11-14 10:15     标题: 如何用命令处理某行后面或前面的空格!

例如有个文本a.txt里有内容!
hello[ ]
i
love[ ]
bbs[ ][ ]
[ ]bathome[ ]
.cn
-------------------------
注意!因为空格不好表现我就用[]代表空格!就一个空格!
-------------------------
如何把他搞成下面几种情况!
1:只把hello后的去掉其他不用
2:只把第3行love后的去掉其他不用
3:只去掉地4行bbs后的2个
4:只去掉第5行后面的
5:只去掉第5行前面的

6:全部去掉空格
=======================
好像情况完了样!如果有多的情况谢谢帮忙说出来下!

[ 本帖最后由 jellyhk 于 2008-11-15 00:37 编辑 ]
作者: jellykid    时间: 2008-11-14 11:31

我知道
%os:~1,1%
是说变量的第一个字符开始数后面的第一个字符
怎么没见过
%a: =%
作者: batman    时间: 2008-11-14 11:49

请问楼上如果要处理的这一行内容如下,该怎么办:
“此行中 中间 也有空 格, 有 英文空格 也有 中文空格 后面还有空格。     ”
作者: jellykid    时间: 2008-11-14 12:16

5楼说的对啊!
你的代码是把文本中的全部都替换????
作者: namejm    时间: 2008-11-14 12:47

  请把这个文本中所有的数据格式都说一下才好写代码。最起码,应该说明:行首、行中是否还有空格?标题只能描述问题的大概,解决问题需要交代细节,永远都不要“如题”!此乃提问之大忌!
作者: Batcher    时间: 2008-11-14 19:54     标题: 回复 8楼 的帖子

你的测试结果如何呢?符合楼主要求么?
作者: batman    时间: 2008-11-14 20:23

这是一个最保险的方案,但效率上会有点问题:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.       set "str=%%i"&call :lp
  4.       call,echo 首%%str%%尾
  5. )
  6. pause>nul&goto :eof
  7. :lp
  8. if "%str:~-1%" equ " " set /a n+=1
  9. if "%str:~-1%" equ " " set /a n+=1
  10. if "%n%" gtr "0" (
  11.    set "str=%str:~,-1%"
  12.    set /a n=0&goto lp
  13. )
  14. set /a n=0
复制代码

作者: jellyhk    时间: 2008-11-15 00:22     标题: 10楼!

10楼的代码运行结果:
只是把内容的前后加了
首  尾

没有去掉空格!不知道怎么会事!


我重写了主题内容!
请大家看看  !
帮忙谢谢代码!

[ 本帖最后由 jellyhk 于 2008-11-15 00:34 编辑 ]
作者: pusofalse    时间: 2008-11-15 04:37

为何不一次说清楚?、、、
  1. @echo off & setlocal enabledelayedexpansion
  2. call :recur a.txt
  3. pause>nul & exit /b
  4. :recur
  5. set "string="
  6. For /f "tokens=*" %%a in (%1) do (
  7.       set "str=%%~a"
  8.       call :reserve
  9.       If "%~1" equ "a.txt" (call :recur "!string!"
  10.          ) else (
  11.          echo !string!&set "string="
  12. ))
  13. Exit /b
  14. :reserve
  15. if defined str set "string=%str:~,1%%string%" &set "str=%str:~1%"&goto reserve
复制代码

作者: batman    时间: 2008-11-15 10:16

原帖由 jellyhk 于 2008-11-15 00:22 发表
10楼的代码运行结果:
只是把内容的前后加了
首  尾

没有去掉空格!不知道怎么会事!


我重写了主题内容!
请大家看看  !
帮忙谢谢代码!

请问楼主怎么能判断后面的空格被去掉了?用眼睛直接是看不出来的吧,所以我加了首尾两个字符。
同时请楼主以后发贴将问题一次性描述清楚,或另有问题就再发新贴求助。
作者: jellyhk    时间: 2008-11-16 06:34

10 ;12楼2位的代码测试了边只是显示在cmd上的,如何加输出命令?
我在echo 后加 了 结果只输出了.cn
作者: pusofalse    时间: 2008-11-16 07:53

你在echo 后加了什么?不可见的字符需要用“”括起来。
显示在CMD中,不是输出吗、、、如果还要把内容输出到文件中,那么你在顶楼说了这个要求吗、、、或者,没有想要的答案?自己看着改就是了,如果你不想停留在现在的程度的话。
作者: jellyhk    时间: 2008-11-17 01:28     标题: 回复15楼!

不是不想自己改!
是改不了!
很多都不是很懂
1:                set "str=%%~a"
中的%%~a就是变量%%a吧
2:                 if defined str set "string=%str:~,1%%string%" &set "str=%str:~1%"&goto reserve
是什么意思!
3:       输出到是搞半天找对了!是在call :recur a.txt 后面加了个输出管道,对吗?




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