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

回复 30楼 的帖子

1、当用户输入的字符串中包含特殊字符时,后者可能出错。
2、是变量替换的意思,把空格替换成井号。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我也来一个!

我这个是看到batman的程序,得到一点启示而进行修改的!希望楼主能够鉴定一下!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=abHJ      dfsKHK    aB"
  4. echo 转换前的字符串是:%str%
  5. set/p=转换前的字符串是:<nul
  6. set "zm= abcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFEDCBA"
  7. :a
  8. if not "!str:~%n%,1!"=="" (
  9.    for /l %%a in (1 1 26) do (
  10.     if "!str:~%n%,1!"=="!zm:~%%a,1!" (set/p=!zm:~-%%a,1!<nul&goto :b)
  11.     if "!str:~%n%,1!"=="!zm:~-%%a,1!" (set/p=!zm:~%%a,1!<nul&goto :b)
  12.    )
  13.    set/p=!str:~%n%,1!<nul
  14. :b
  15.   set/a n+=1&goto :a
  16. )
  17. pause>nul
复制代码

[ 本帖最后由 sjzong 于 2009-4-21 21:09 编辑 ]
1

评分人数

TOP

我也来个:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=abHJ      dfsKHK    aB"
  3. :lp
  4. for %%a in (aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ) do (
  5.      set "temp=%%a"
  6.      if "!str:~,1!" equ "!temp:~,1!" set /p=!temp:~1,1!<nul&goto next
  7.      if "!str:~,1!" equ "!temp:~1,1!" set /p=!temp:~,1!<nul&goto next
  8. )
  9. set /p=!str:~,1!<nul
  10. :next
  11. set "str=!str:~1!"&if defined str goto lp
  12. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-4-20 13:28 编辑 ]
1

评分人数

***共同提高***

TOP

回复 33楼 的帖子

运行结果不对

TOP

回楼上,是多写个c字符,已改正
***共同提高***

TOP

都忘了这个帖了,帖一下我的代码
  1. @echo off&Setlocal EnableDelayedExpansion
  2. set "Dxie=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3. set "Xxie=abcdefghijklmnopqrstuvwxyz"
  4. set var=af SDF jfdi:LKJFIefIfifUfdf  AsZfzG sJ
  5. echo            转换前:%var%
  6. for /l %%a in (0 1 25) do (
  7.   set "D!Dxie:~%%a,1!=!Dxie:~%%a,1!"
  8.   set "X!Xxie:~%%a,1!=!Xxie:~%%a,1!"
  9. )
  10. :loop
  11. set "str=!var:~0,1!"
  12. if "%str%"=="!D%str%!" (set num=!num!!X%str%!) else (
  13.   if defined D!str! (set num=%num%!D%str%!) else set "num=%num%%str%"
  14. )
  15. set "var=%var:~1%"
  16. if defined var goto loop
  17. echo            转换后:%num%
  18. pause
复制代码
技术问题请到论坛发帖求助!

TOP

回复 35楼 的帖子

改成这样?
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=abHJ      dfsKHK    aB"
  3. :lp
  4. (for %%a in (aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ) do (
  5.      set "temp=%%a"
  6.      if "!str:~,1!" equ "!temp:~,1!" set /p=!temp:~1,1!&goto next
  7.      if "!str:~,1!" equ "!temp:~1,1!" set /p=!temp:~,1!&goto next
  8. )
  9. set /p=!str:~,1!)<nul
  10. :next
  11. set "str=!str:~1!"&if defined str goto lp
  12. pause>nul
复制代码
1

评分人数

TOP

其实25楼的代码也很不错^_^
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

跟版主的思路差不多.
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz) do (
  3. set str=%%i&set #!str:~0,1!=!str:~1,1!&set $!str:~1,1!=!str:~0,1!)
  4. set/p strr=请输入:
  5. echo 转换前:%strr%
  6. set "st="
  7. set n=0
  8. :begin
  9. set str=!strr:~%n%,1!
  10. if "!str!"=="!#%str%!" (set st=!st!!$%str%!) else if "!str!"=="!$%str%!" (set st=!st!!#%str%!) else set "st=!st!!str!"
  11. set/a n+=1
  12. if not "!str!"=="" (goto begin)
  13. echo 转换后:!st!
复制代码

[ 本帖最后由 inittab 于 2009-4-22 11:57 编辑 ]

TOP

  1. @echo Off & setlocal EnableDelayedExpansion
  2. set "var=tEST" & set "str=!var!"
  3. set "Lower=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"
  4. set "Upper=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"
  5. For %%a in (%Lower%) do set "var=!var:%%a=%%a!"
  6. For /L %%a in (0 2 51) do (set "_!Lower:~%%a,1!=!Upper:~%%a,1!")
  7. :Loop
  8. If defined str (
  9.     set "AlphaL=%str:~,1%" & set "AlphaU=%var:~,1%" & set "Letter=!AlphaU!
  10.     If "!AlphaL!" equ "!AlphaU!" If defined _!AlphaL! (set "Letter=!_%str:~,1%!")
  11.     set "str=%str:~1%" & set "var=%var:~1%"
  12.     <nul set /p=!Letter!& goto :Loop
  13. )
  14. Echo\ & Pause>nul
复制代码
心绪平和,眼藏静谧。

TOP

回复 40楼 的帖子

此类代码始终摆脱不了逐字判断,效率问题,goto次数等于 字符串个数。
兄的代码不觉得for循环次数比36楼要多些吗?
32、33楼虽用goto跳出for,但其实for循环是不会跳出的,只是停止运行里面的命令罢了。也就是说for循环次数等于字符串个数乘26
技术问题请到论坛发帖求助!

TOP

我也来个

  1. rem 思路:先定义两个集合:大写和小写,然后逐字符分析。
  2. rem 调换两个变量即可实现小大写互换
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. set temp_a=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  6. set temp_b=abcdefghijklmnopqrstuvwxyz
  7. set /p temp_c=请输入:
  8. echo 转换前:%temp_c%
  9. for /l %%a in (0 1 10000000) do (
  10. set temp_n=!temp_c:~%%a,1!
  11. for /l %%b in (0 1 26) do (
  12. set temp_m=!temp_a:~%%b,1!
  13. if !temp_n! == !temp_m! (
  14. if defined temp_n (
  15. set temp_s=!temp_b:~%%b,1!
  16. call :sub !temp_n! !temp_s!
  17. ) else (
  18. echo 转换后:!temp_c!
  19. pause>nul
  20. exit
  21. )
  22. )
  23. )
  24. )
复制代码

TOP

回复 43楼 的帖子

水平有限,想不到更好的办法,呵呵

TOP

看一看先……………………
1

评分人数

TOP

首先设置变量提高点效率:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ) do (
  3.     set "code=%%a"&set "#!code:~,1!=!code:~1,1!"&set "_!code:~1,1!=!code:~,1!"
  4. )
  5. set /p str=请输入字符:&echo.&set /p=经转换后:<nul
  6. :lp
  7. if defined _%str:~,1% (
  8.    if "%str:~,1%" equ "!#%str:~,1%!" (
  9.       set /p=!_%str:~,1%!<nul
  10.       ) else (
  11.       set /p=!#%str:~,1%!<nul
  12.    )
  13.    ) else (
  14.    set /p=%str:~,1%<nul
  15. )
  16. set "str=%str:~1%"
  17. if defined str goto lp
  18. pause>nul
复制代码
***共同提高***

TOP

返回列表