[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
楼主给的特例可以这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. for /f %%a in ('cmd /v /u /c "echo ^!test^!"^|more') do set "str=!str!,%%a"
  4. echo !str:~1!
  5. pause
复制代码

TOP

仍然是根据楼主的特例写的:
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. for /l %%a in (0 1 9) do set "str=!str:%%a=,%%a!"
  4. echo !str:~1!
  5. pause
复制代码

TOP

常见的通用方案是:
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. for /l %%a in (0 1 4090) do (
  4. if "!test:~%%a!"=="" goto exitFor
  5. set "test=!test:~,%%a!,!test:~%%a!"
  6. )
  7. :exitFor
  8. echo !test!
  9. pause
复制代码

TOP

以上一个方案为基础的另一个方案,最长支持100字符长度,速度较快:
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. for /l %%a in (9 -1 0) do (
  4.    set 个位=!个位!9876543210
  5.    set 十位=!十位!%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a
  6. )
  7. set 个位=!test!!个位!
  8. set 十位=!test!!十位!
  9. set /a 长度=1!十位:~99,1!!个位:~99,1!-100
  10. for /l %%a in (1 1 !长度!) do set "test=,!test:~-1!!test:~,-1!"
  11. echo !test:~1!
  12. pause
复制代码

TOP

和上一个方案思路一致,只是通过调用二分回溯函数来计算长度,对付长字符串时具有优势
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. call :strlen test 长度
  4. for /l %%a in (1 1 !长度!) do set "test=,!test:~-1!!test:~,-1!"
  5. echo !test:~1!
  6. pause
  7. :strlen
  8. setlocal enabledelayedexpansion
  9. set "$=!%1!#"
  10. set len=&for %%a in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1)do if !$:~%%a^,1!. NEQ .
  11. set/a len+=%%a&set $=!$:~%%a!
  12. endlocal&If %2. neq . (set/a%2=%len%)else echo %len%
  13. exit/b
复制代码

TOP

或用简便而强大的 js 正则替换:
  1. @set @n=0;/*&echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. echo !test!|cscript /nologo /e:jscript %0
  4. pause&exit/b*/
  5. WScript.Echo(WScript.StdIn.ReadAll().replace(/(\w)/g,",$1").replace(/^,/,""))
复制代码

TOP

第三方当然也是可以的
  1. @echo off&setlocal enabledelayedexpansion
  2. set test=340524
  3. echo !test!|sed "s/./,&/g;s/^,//"
  4. pause
复制代码

TOP

返回列表