[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 zm900612 于 2011-7-15 11:26 编辑

用 choice 的思路,不通用、不高效、不简洁、不考虑字符的兼容性:
  1. aAcebFaJad
  2. cls
  3. @echo off&setlocal enabledelayedexpansion
  4. set str=#ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
  5. set /p 字符串=<%0
  6. set 字
  7. call :strlen 字符串
  8. (for /l %%a in (1 1 !len!) do (
  9. choice /cs /c abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 /n>nul
  10. for %%b in (!errorlevel!) do set 结 果 =!结 果 !!str:~%%b,1!
  11. ))<%0
  12. set 结
  13. pause
  14. :strlen
  15. setlocal enabledelayedexpansion
  16. set "$=!%1!#"
  17. set len=&for %%a in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1)do if !$:~%%a^,1!. NEQ . set/a len+=%%a&set $=!$:~%%a!
  18. endlocal&If %2. neq . (set/a%2=%len%)else set len=%len%
复制代码

TOP

本帖最后由 zm900612 于 2011-7-15 12:47 编辑

另一种逐字替换,兼容各种可见的特殊字符,调用 ascmap 后可以支持汉字:
  1. @echo off
  2. set "字符串=WwW.baThOME.net"
  3. set 字
  4. setlocal enabledelayedexpansion
  5. set<nul>tmp /p=@!字符串!
  6. (for %%a in (tmp) do (
  7. for /l %%b in (1 2 %%~za) do echo;
  8. ))>k
  9. set str=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!"#$%%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~
  10. for /f "skip=2 tokens=1,3" %%a in ('fc /b k tmp') do if "%%a" lss "1" set 结 果 =!结 果 !!str:~0x%%b,1!
  11. set 结
  12. del tmp k
  13. pause
复制代码

TOP

一翻旧帖才发现自己以前已经发过了奇葩代码,那就贴两个常规思路的吧,估计会撞车:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=TestABC"
  3. set "str2=!str:~1!"
  4. set "大写=!str!"&set "小写=!str!"
  5. for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "大写=!大写:%%a=%%a!"
  6. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "小写=!小写:%%a=%%a!"
  7. for /l %%a in (0 1 100) do (
  8. if "!str:~%%a,1!"=="!小写:~%%a,1!" (
  9. set "str=!str:~,%%a!!大写:~%%a,1!!str2:~%%a!"
  10. ) else (
  11. if "!str:~%%a,1!"=="!大写:~%%a,1!" set "str=!str:~,%%a!!小写:~%%a,1!!str2:~%%a!"
  12. )
  13. )
  14. echo !str!
  15. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=TestABC"
  3. set "str=@!str!"
  4. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z)do set %%a=%%a
  5. for /l %%a in (1 1 8189)do (
  6. if "!str:~%%a,1!"=="" (
  7. for /f "delims=" %%b in (^""!结果!"^")do echo %%~b&pause
  8. )
  9. set 结果=!结果!!str:~%%a,1!
  10. if !str:~%%a^,1! leq Z if !str:~%%a^,1! geq a (
  11. for /f %%b in ("!str:~%%a,1!:") do (
  12. if %%b neq %%~db (set chr=%%~db)else set chr=!%%b~0!
  13. )
  14. set 结果=!结果:~,-1!!chr:~,1!
  15. )
  16. )
复制代码

TOP

返回列表