本帖最后由 CrLf 于 2012-3-2 17:49 编辑
回复 17# lllsoslll
前不久写过将空格替换为几乎任意字符的高兼容性方案: | @echo off | | set str=bbs.bathome.net=abc=123=ABC=@#$=test======== | | | | | | set 要替换的字符=[#] | | set "空=" | | set "k= " | | set "t= " ;此处引号内的内容为 t=tab制表符 | | | | | | setlocal enabledelayedexpansion | | set str=!str:"=""! | | | | | | for %%a in (^^ ^& ^| ^( ^) ^< ^> ";" ",") do set "str=!str:%%~a=^^^%%~a!" | | | | | | endlocal&set "str=%str:!=^^!%" | | | | | | set "str=%str: =!t!%" ;此处引号内的内容为 str:tab制表符=!t! | | | | for /f "delims=" %%a in (""%str: =!k!%"") do set str=%%~a | | | | | | setlocal enabledelayedexpansion | | set "str=!str: =%要替换的字符%!" | | | | | | set "str=!空!%str%" | | | | | | set str=!str:""="! | | | | | | echo !str! | | | | | | pauseCOPY |
但是因为在 powerbat 的方案中,除了 = 与 ! 之外所有字符都被处理成 asc 了,所以可以这样: | @echo off&setlocal enalbedelayedexpansion | | | | | | rem [[[[[此行代表 powerbat 的方案实现代码]]]]] | | | | endlocal&set str=%str:!=33 % | | | | | | set str=%str: =space% | | | | | | for /f "delims=" %%a in (""%str%"") do set "str=%%~a" | | | | set str=%str: =32 % | | | | | | set str=%str:space= % | | | | | | echo %str% | | pauseCOPY |
|