[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set Lcase= abcdefghijklmnopqrstuvwxyz
  4. set Ucase= ABCDEFGHIJKLMNOPQRSTUVWXYZ
  5. for /l %%a in (1,1,26) do set _!Lcase:~%%a,1!=%%a
  6. set /p var=请输入:
  7. :loop
  8. set char=!var:~%pi%,1!
  9. set /a sn=_!char! 2>nul||set sn=0
  10. if defined char (
  11. if %sn% gtr 0 (
  12.     if "!char!"=="!Lcase:~%sn%,1!" (set str=!str!!Ucase:~%sn%,1!) else (set str=!str!!Lcase:~%sn%,1!)
  13. ) else (
  14.     set str=!str!!char!
  15. )
  16. set /a pi+=1
  17. goto loop
  18. )
  19. echo.!str!
  20. echo.&pause
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 26楼 的帖子

那就说明你的方法还不够好,继续改进。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

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

TOP

回复 25楼 zqz0012005 的帖子

嗯,没必要将大小写字母定义在两个变量中。
  1. @echo off
  2. set "letters= abcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFEDCBA"
  3. for /l %%a in (1,1,26) do call set /a "_%%letters:~%%a,1%%=%%a"
  4. :input
  5. setlocal EnableDelayedExpansion
  6. echo 请输入:&set /p var=&if not defined var endlocal&goto:input
  7. :loop
  8. set char=!var:~%pi%,1!
  9. set /a sn=_!char! 2>nul||set sn=0
  10. if defined char (
  11.     if %sn% gtr 0 (
  12.         if "!char!"=="!letters:~%sn%,1!" (set str=!str!!letters:~-%sn%,1!) else (set str=!str!!letters:~%sn%,1!)
  13.     ) else (
  14.         set str=!str!!char!
  15.     )
  16.     set /a pi+=1
  17.     goto loop
  18. )
  19. echo=!str!
  20. pause&endlocal&goto input
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

不要忘了 for /f 的 eol 隐患,呵呵。

for /l 无限循环由于运行机制,其实不太实用。必须用 exit 强制退出整个bat,exit /b 或 goto 都不行。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表