[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p var=请按字母先后顺序输入两个字母:
  3. set var1=%var:~0,1%
  4. set var2=%var:~-1,1%
  5. set str=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
  6. set count=1
  7. :begin
  8. for /f "tokens=%count%" %%i in ("!str!") do (
  9. set /a count+=1
  10. if %%i==!var1! set count1=!count!
  11. if %%i==!var2! set /a count2=!count!-2
  12. goto begin )
  13. echo %count1% %count2%
  14. set /a a=2*(count1-1)
  15. set /a b=2*(count2-count1+1)
  16. echo %a% %b%
  17. set str1=!str:~%a%,%b%!
  18. echo %str1%
  19. pause
复制代码
虽然很麻烦,但是结果还是正确的...

TOP

随风的代码,非常好!学习……
(*^_^*)

TOP

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

TOP

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

TOP

学习了,顶一下。

TOP

回复 11楼 的帖子

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

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

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

@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

看不懂啊55555555555

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

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

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

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

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

  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

返回列表