[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
代码有bug:
如果pwd=b654bc321呢?
最直接的办法是将数字0-9均设置为类似“#单个数字=0”的变量,顺序读取每个字符,判断“#所取字符”是否被定义。

TOP

本帖最后由 qixiaobin0715 于 2023-8-9 09:51 编辑

如果是单独一行字符串的话:
  1. @echo off
  2. set "pwd=b123bc456"
  3. for /l %%i in (0,1,9) do set #%%i=true
  4. set n=0
  5. :o
  6. call set CH=%%pwd:~%n%,1%%
  7. if defined #%CH% set var=%var%%CH%
  8. set /a n+=1
  9. if defined CH goto :o
  10. echo,%var%
  11. pause
复制代码
上面代码,变量值中不能含有&等特殊字符,如何处理这种情况不得而知。

TOP

本帖最后由 qixiaobin0715 于 2023-8-9 15:13 编辑
  1. @echo off
  2. set "pwd=0b123b=c456p;i987"
  3. setlocal enabledelayedexpansion
  4. for %%i in (%pwd%) do set var=!var!%%i
  5. set pwd1=a%var%a
  6. set pwd2=a%var%a
  7. for /l %%i in (0,1,9) do set pwd1=!pwd1:%%i= !
  8. for %%i in (%pwd1%) do (
  9.     set pwd2=1!pwd2:*%%i=!
  10.     set /a n=pwd2
  11.     set n=!n:~1!
  12.     if defined n set m=!m!!n!
  13. )
  14. if defined m (echo,%m%) else (No Numbers)
  15. pause
复制代码
代码第4-6行是对变量值进行规整;后面与5楼代码大同小异,思路基本相同。
如果含有(&<等)特殊字符则代码无效。

TOP

返回列表