[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. set "str=   33 ff c:\ab\exe.ffg  echo;00 0 0-00->55.txt<   "
  3. for /f "tokens=*" %%i in ("%str%") do set "str=%%i"
  4. :lp
  5. if "%str:~-1%"==" " set "str=%str:~0,-1%"&goto lp
  6. echo "%str%"
  7. pause
复制代码
1

评分人数

    • batman: 在效率上欠考虑PB + 5

TOP

这样效率提高点吧
  1. @echo off
  2. set "str=   33 ff c:\ab\exe.ffg  echo;00 0 0-00->55.txt<   "
  3. for /f "tokens=*" %%i in ("%str%") do (
  4.    for %%j in ("c:\%%i") do set "str=%%~pnxj"
  5. )
  6. echo "%str:~1%"
  7. pause
复制代码

TOP

不考虑特殊字符的话 call出来 echo %* 效率可以
利用%%~nxi扩展的话 路径的处理上也有问题
我再用替换法  发现效率比不上echo %*
文本中有一个引号的话也出错 两引号之间没空格可以处理
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (a.txt) do (
  3.     set var=%%i&set str=&set "k= "
  4.     set "var=!var: =" "!"
  5.     for %%a in ("!var!") do if %%a neq "" (
  6.         set "str=!str!!k!%%~a"&set "k= "
  7.       ) else set "k= !k!"
  8.         echo "!str:~1!"
  9.    )
  10. pause
复制代码

TOP

返回列表