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

批处理显示输入的两个字母中的所有字母

新手晋级练习题 1
要求:
    输入任意两个字母,显示这两个字母中间的所有字母。
如:  输入 af 则显示英文字母a至f  如: a  b c d e f

[ 本帖最后由 随风 于 2008-1-3 23:52 编辑 ]
技术问题请到论坛发帖求助!


:
  1. @echo off
  2. echo 请按先后顺序输入两个字母 如:af ,不能输入 fa
  3. set /p input=
  4. cls
  5. for %%b 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 (
  6. if /i "%input:~0,1%"=="%%b" set ok=ok
  7. if /i "%input:~1,1%"=="%%b" set ok=&echo %%b
  8. if defined ok echo %%b
  9. )
  10. echo.&pause&exit
复制代码
技术问题请到论坛发帖求助!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :ke
  4. cls
  5. set /p zhen= 请按先后顺序输入两个不相邻的字母(如输入多于两个则只取前两个,^
  6. 如先后顺序颠倒或输入了相邻的字母请重新输入)
  7. set zhen=%zhen:~0,2%
  8. if %zhen:~0,1% geq %zhen:~1,1% goto ke
  9. cls
  10. for %%b 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 (
  11.     set /a wang+=1
  12.     set %%b=!wang!
  13.     if %%b gtr %zhen:~0,1%  if %%b lss %zhen:~1,1% echo %%b
  14. )
  15. set /a lu=!%zhen:~1,1%!-!%zhen:~0,1%!
  16. if %lu%==1 goto ke
  17. pause>nul
复制代码

TOP

@echo off
setlocal enabledelayedexpansion
:ke
cls
set /p zhen= 请按先后顺序输入两个不相邻的字母(如输入多于两个则只取前两个,^
如先后顺序颠倒或输入了相邻的字母请重新输入)
set zhen=%zhen:~0,2%
if %zhen:~0,1% geq %zhen:~1,1% goto ke
cls
for %%b 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 wang+=1
    set %%b=!wang!
    if %%b gtr %zhen:~0,1%  if %%b lss %zhen:~1,1% echo %%b
)
set /a lu=!%zhen:~1,1%!-!%zhen:~0,1%!
if %lu%==1 goto ke
pause>nul
=============================================================
这里的set /a wang+=1
    set %%b=!wang!
起得是什么作用,把数值赋给 %%b,但我把@echo off去掉,查看这两句好像和整个代码没什么关系,但去掉他们有不能运行,感觉能用别的语句代替,可又不会,浅默能给解释一下吗,谢谢

[ 本帖最后由 myweb9169 于 2008-1-21 20:00 编辑 ]

TOP

练功..?
练什么吖``都没人回,哪知道练得如何...
Software is like sex: it's better when it's free..!

TOP

你好4楼的朋友,"set /a wang+=1" " set %%b=!wang!"这两句是为下面的 "set /a lu=!%zhen:~1,1%!-!%zhen:~0,1%!" 和 "if %lu%==1 goto ke" 这两句服务的。是为了排除相邻的字母。如:输入a和b两个字母时。在" set %%b=!wang!"时变成 a=1 ;b=2.下面的"set /a lu=!%zhen:~1,1%!-!%zhen:~0,1%!" 就变成了set /a lu=!b!-!a!然后变成set /a lu=2-1再后面的
"if %lu%==1 goto ke" 判断出lu=1就跳转到标签:ke.

[ 本帖最后由 浅默 于 2008-1-25 17:33 编辑 ]

TOP

谢谢浅默的解答,思维很清楚,明白了,又学到东西了,呵呵

TOP

前辈们的身影,看起来都很熟悉。
晚辈就算模仿一下吧,
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i 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 (
  4. set /a count+=1
  5. set %%i=!count!
  6. set !count!=%%i
  7. )
  8. set /p input=输入两个顺序字母:
  9. cls
  10. for /l %%i in (!%input:~0,1%!,1,!%input:~1,1%!) do echo !%%i!
  11. pause>nul
复制代码
静水流深...

TOP

看不懂啊55555555555

TOP

@echo off
setlocal enabledelayedexpansion
:ke
cls
set /p zhen= 请按先后顺序输入两个不相邻的字母(如输入多于两个则只取前两个,^
如先后顺序颠倒或输入了相邻的字母请重新输入)
set zhen=%zhen:~0,2%
if %zhen:~0,1% geq %zhen:~1,1% goto ke
cls
for %%b 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 wang+=1
    set %%b=!wang!
    if %%b gtr %zhen:~0,1%  if %%b lss %zhen:~1,1% echo %%b
)
set /a lu=!%zhen:~1,1%!-!%zhen:~0,1%!
if %lu%==1 goto ke
pause>nul
=======================================================================
对不起大哥
能不能上面的程序一句一句的用中文翻译一下啊
我是 超级菜鸟啊!!
我是新手 请多指教

TOP

@echo off
setlocal enabledelayedexpansion
for %%i 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 count+=1
set %%i=!count!
set !count!=%%i
)
set /p input=输入两个顺序字母:
cls
for /l %%i in (!%input:~0,1%!,1,!%input:~1,1%!) do echo !%%i!
pause>nul
=======================================================================
梦想种子大哥
set !count!=%%i是什么意思
我是新手 请多指教

TOP

回复 11楼 的帖子

set %%i=!count!
set !count!=%%i

这里是把数字和字母之间联系起来,建立等价关系。
就是提到1就会显示A,提到A就会显示1.
静水流深...

TOP

学习了,顶一下。

TOP

不知道在DOS中咋取得某个字符的ASCII码值
要是能取得,那么用/a表达式也许也是不错的主意.

TOP

怎么没人讨论楼主的代码啊,我觉得还是随风写的代码好点,简洁又有效率

TOP

返回列表