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

[文本处理] [已解决]批处理去掉字符右边空格的疑问

先看代码:
  1. call :delright  "kk   "
  2. echo "%DelR%"
  3. pause
  4. :delright
  5. set "DelR=%~1"
  6. :delright2
  7. if "%DelR:~-1%"==" " set DelR=%DelR:~0,-1%&&goto delright2
  8. goto :eof
复制代码
疑问:此代码能够较好的实现去除字符右边的空格,但有时Call右边的参数"kk  "并不是那么有规则,如只是两个空格“  ”或多个空格“         ”(此时不包括字母KK,即第一行代码为call :delright "        "),此时代码便会报错。请问该怎样改进代码,才能过滤掉这种纯粹空格的参数。

[ 本帖最后由 tz_being 于 2009-11-15 21:38 编辑 ]

其实发贴前我看过了,当某一行纯粹由多个空格构成时,那个标准答案也解决不了。

TOP

感谢Taurus解答,DeLeTe朋友给出另外一个近似完成的答案:
  1. @echo off
  2. call :delright "12 3   "
  3. echo "%DelR%"
  4. pause
  5. :delright
  6. set DelR=
  7. for %%i in (%~1) do call set DelR=%%DelR%%%%i
  8. set DelR=%DelR:~1,-1%
  9. goto :eof
复制代码
美中不足的是,如果参数不带空格,会被截掉最右边的一个字符。(注意:set DelR=后面和DelR=%%DelR%%%%i后面都带有一个空格)

[ 本帖最后由 tz_being 于 2009-11-15 21:20 编辑 ]

TOP

原帖由 Taurus 于 2009-11-15 20:55 发表

是要得出甚么结果?能否举例?


如果需处理的参数是“12 3   ”,我希望的结果是“12 3”;
如果需处理的参数是“       ”,我希望的结果是“”
DeLeTe朋友的代码,set DelR=后面和DelR=%%DelR%%%%i后面都带有一个空格

[ 本帖最后由 tz_being 于 2009-11-15 21:23 编辑 ]

TOP

感谢Taurus朋友,完美解决!

TOP

返回列表