[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
当然,可以用if来检测。
但是因为受 联盟里 3742版主的影响,不太喜欢if,所以尽量不用...
测试代码:
  1. @echo off
  2. set "str=    abc   df  fd       d     "
  3. for /f "tokens=* delims= " %%i in ("%str%") do set "str=%%i"
  4. set str=%str: = # %
  5. call :Rev "%str%"
  6. for /f "tokens=* delims=#" %%i in ("%Res%") do set "str=%%i"
  7. set "str=%str:#= # %"
  8. call :Rev "%str%"
  9. echo "%Res:#= %"
  10. pause>nul
  11. :Rev str
  12. set "Res="
  13. for %%i in (%~1) do call set Res=%%i%%Res%%
复制代码

TOP

呵呵,楼上的不错,先通过for循环消除开头的 空格,然后用if来检测(个人不太喜欢)...
也有几点建议:
1、标签中的变量设置不甚恰当。
程序中的var变量在这里最好放到标签:ie里,特别是比较长的程序的话,你就知道好处了。
2、那个else似乎没什么用处。
改成以下代码是否好点呢?
  1. @echo off
  2. set "str=    abc d  "
  3. for /f "tokens=* delims= " %%a in ("%str%") do call :ie "%%a"
  4. echo.
  5. echo  去除空格前:  [%str%]
  6. echo.
  7. echo  去除空格后:  [%var%]
  8. echo.
  9. pause&goto :eof
  10. :ie str
  11. set "var=%~1"
  12. if "%var:~-1%"==" "  call :ie "%var:~0,-1%"
复制代码

TOP

呵呵,你这个其实 还没去掉d后面的空格的///

TOP

呵呵,这个以前就拜读过了,只是当初没太注意,也没去想原理;原来蛮有应用价值的嘛!
精品就是精品啊,哈哈!!

TOP

好,值得加分!!
在联盟qw版主写的 数字排序 程序里出现过这种用法:%*

TOP

对于楼上的 namejm 和 随风 兄弟的代码,应该来说,可以比较好的解决楼主的问题,但是也有瑕疵:
1、随风兄弟的现行代码 无法处理 特殊字符;
2、namejm的代码:
  1. @echo off
  2. set "str=   ab c&>!   "
  3. for /f "tokens=*" %%i in ("%str%") do echo "☆%%~nxi☆"
  4. pause
复制代码
namejm的代码是利用了CMD对文件路径、文件名的“解析漏洞”很好的去掉了字符串首尾两端的空格,但是还存在一些小问题,测试代码:
  1. @echo off
  2. set "str=   ab\ c&>!  .  "
  3. for /f "tokens=*" %%i in ("%str%") do echo "☆%%~nxi☆"
  4. pause
复制代码
运行结果会抛弃"ab"和"."
呵呵,欢迎大家继续讨论!

TOP

返回列表