返回列表 发帖
本帖最后由 zm900612 于 2011-7-15 11:26 编辑

用 choice 的思路,不通用、不高效、不简洁、不考虑字符的兼容性:
aAcebFaJad
cls
@echo off&setlocal enabledelayedexpansion
set str=#ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
set /p 字符串=<%0
set
call :strlen 字符串
(for /l %%a in (1 1 !len!) do (
choice /cs /c abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 /n>nul
for %%b in (!errorlevel!) do set 结 果 =!结 果 !!str:~%%b,1!
))<%0
set
pause
:strlen
setlocal enabledelayedexpansion
set "$=!%1!#"
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!
endlocal&If %2. neq . (set/a%2=%len%)else set len=%len%COPY

TOP

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

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

TOP

一翻旧帖才发现自己以前已经发过了奇葩代码,那就贴两个常规思路的吧,估计会撞车:
@echo off&setlocal enabledelayedexpansion
set "str=TestABC"
set "str2=!str:~1!"
set "大写=!str!"&set "小写=!str!"
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!"
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!"
for /l %%a in (0 1 100) do (
if "!str:~%%a,1!"=="!小写:~%%a,1!" (
set "str=!str:~,%%a!!大写:~%%a,1!!str2:~%%a!"
) else (
if "!str:~%%a,1!"=="!大写:~%%a,1!" set "str=!str:~,%%a!!小写:~%%a,1!!str2:~%%a!"
)
)
echo !str!
pauseCOPY
@echo off&setlocal enabledelayedexpansion
set "str=TestABC"
set "str=@!str!"
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
for /l %%a in (1 1 8189)do (
if "!str:~%%a,1!"=="" (
for /f "delims=" %%b in (^""!结果!"^")do echo %%~b&pause
)
set 结果=!结果!!str:~%%a,1!
if !str:~%%a^,1! leq Z if !str:~%%a^,1! geq a (
for /f %%b in ("!str:~%%a,1!:") do (
if %%b neq %%~db (set chr=%%~db)else set chr=!%%b~0!
)
set 结果=!结果:~,-1!!chr:~,1!
)
)COPY

TOP

返回列表