[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
用了5个FOR:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (a.txt) do (
  3.     set str=%%i
  4.     for %%a in (%%i) do set str1=%%a
  5.     for %%h in (!str1!) do (
  6.         for %%m in (!str1!#) do set hh=!str:%%h=%%m!
  7.         for /f "delims=#" %%x in ("!hh!") do echo "%%x"
  8.     )
  9. )
  10. pause
复制代码
1

评分人数

    • batman: 虽然5个for效率还是高PB + 10
(*^_^*)

TOP

只能去掉末尾100个空格,要是大于100个空格,必须改动for /l中的数字,这也是此代码的不合理之处:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (a.txt) do (
  3.     set str=%%i
  4.     call :lp
  5. )
  6. pause&exit/b
  7. :lp
  8. for /l %%a in (-1 -1 -100) do (
  9.         set "str1=!str:~%%a,1!"
  10.         if not "!str1!"==" " (
  11.            set n=%%a&set /a n+=1
  12.            for %%i in (!n!) do set "str1=!str:~0,%%i!"
  13.            echo "!str1!"&goto :eof
  14.         )
  15. )
复制代码
1

评分人数

    • batman: 空格是未知的,有可以大于100个PB + 5
(*^_^*)

TOP

回复 15楼 的帖子

之所以不用call,是以为随风在一篇讨论效率的帖子中说过,如果出现这种方式(call, set hh=%%str:!str1!=!str1!#%%),还是用for的好。
具体参看:
http://bbs.bathome.net/viewthrea ... ght=%2B%CB%E6%B7%E7
(*^_^*)

TOP

返回列表