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

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

[复制链接]
发表于 2009-4-5 14:00:17 | 显示全部楼层
随风的代码,非常好!学习……
发表于 2009-4-6 16:24:23 | 显示全部楼层
  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
复制代码
虽然很麻烦,但是结果还是正确的...
发表于 2009-4-6 21:35:39 | 显示全部楼层

回复 17楼 的帖子

大家都写的比较好。
我是新来的,看了几天论坛。
发现如 set var=!str:%%a=! 或者var1=%var:~0,1%,var2=%var:~-1,1%。等语句在很多地方都出现过。
不知道在这个赋值语句中后面的“:”或者“:~0,1”“:~-1,1”到底表示的什么意思。
希望前辈指点,谢谢!
发表于 2009-4-6 21:43:33 | 显示全部楼层

回复 18楼 的帖子

set截取字符详解
http://bbs.bathome.net/viewthread.php?tid=996

set变量字符截取点点通
http://bbs.bathome.net/viewthread.php?tid=40

新手set截取字符练习工具
http://bbs.bathome.net/viewthread.php?tid=1149
发表于 2009-4-6 23:03:24 | 显示全部楼层
  1. @set/ps=Plz input:&(call echo e102 '%%s%%'&more /e +1 "%~f0")|debug|findstr "^[^I\-0P]"&pause>nul&exit/b
  2. a100
  3. jmp 104

  4. a104
  5. MOV     BL,[0103]
  6. MOV     AL,[0102]
  7. SUB     BL,AL
  8. LEA     CX,[BX+01]
  9. MOV     AH,02
  10. MOV     DL,[0102]
  11. INT     21
  12. INC     DL
  13. LOOP    0116
  14. INT     20

  15. g
  16. q
复制代码

评分

参与人数 1技术 +1 收起 理由
依山居 + 1 1

查看全部评分

发表于 2009-4-8 20:46:04 | 显示全部楼层
看了两天终于吧这个帖子的代码都读懂了,确实写的不错。
呵呵!谢谢版主的耐心解答!
发表于 2009-4-25 00:23:40 | 显示全部楼层

我也来试试

思路:先截取第二个字母前的字符串(包括该字母),然后把第一个字母前的字符串(包括这个字母)删除,最后补上第一个字母即可
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str= abcdefghijklmnopqrstuvwxyz"
  4. set/p input=请按先后顺序输入两个字母(如 af ,不能输入 fa):
  5. cls
  6. set/a n=0
  7. :a
  8. if not "%input:~1,1%"=="!str:~%n%,1!"  (set/a n+=1&goto :a)
  9. set str=!str:~1,%n%!
  10. set str=!str:*%input:~0,1%=!
  11. echo %input:~0,1%!str!
  12. echo.&pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-25 00:32 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 精彩思路

查看全部评分

发表于 2009-4-27 15:56:14 | 显示全部楼层
学习学习!!!暂时!不会!
发表于 2009-5-1 16:07:06 | 显示全部楼层
@echo off
echo 请按先后顺序输入两个字母 如:af ,不能输入 fa
set /p input=
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 (
if /i "%input:~0,1%"=="%%b" set ok=ok
if /i "%input:~1,1%"=="%%b" set ok=&echo %%b
if defined ok echo %%b
)
echo.&pause&exit
set ok=ok和set ok=&echo %%b
能帮忙解释 随风

[ 本帖最后由 yangyuankui 于 2009-5-1 16:09 编辑 ]
发表于 2009-5-1 16:46:05 | 显示全部楼层

回复 24楼 的帖子

自己单步运行一下,看看过程,思考一下。
  1. echo 请按先后顺序输入两个字母 如:af ,不能输入 fa
  2. set /p input=
  3. cls
  4. 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 (
  5.   if /i "%input:~0,1%"=="%%b" set ok=ok
  6.   if /i "%input:~1,1%"=="%%b" set ok=&echo %%b
  7.   if defined ok echo %%b
  8.   pause
  9. )
  10. echo.&pause
复制代码
发表于 2015-7-27 16:04:04 | 显示全部楼层
參考以上前輩做的

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p var=Input Alphabet:
  3. set n=-2
  4. 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"
  5. for %%i in (%str%) do (
  6. set /a n+=2
  7. set %%i=!n!)
  8. set "star=%var:~,1%"
  9. set "end=%var:~-1%"
  10. set /a end1=!%end%!-!%star%!+1
  11. call echo %%str:~!%star%!,%end1%%%
  12. pause
复制代码
发表于 2015-7-28 13:56:17 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion

  2. set char=abcdefghijklmnopqrstuvwxyz
  3. set /p str= "请输入英文字母:"
  4. set c1=%str:~0,1%
  5. set c2=%str:~1,1%

  6. for /l %%a in (0,1,25) do (
  7.         set c3=!char:~%%a,1!
  8.         if !c1!==!c3! set start=""
  9.         if defined start set /p= !c3! <nul
  10.         if !c2!==!c3! goto end
  11.        
  12. )
  13.        
  14. :end
  15. pause
复制代码
发表于 2015-8-8 11:13:43 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. 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"
  3. set /p zimu=输入两个字母
  4. for %%a in (%str%) do (
  5. if not %%a==%zimu:~1% (echo;%%a) else (echo;%%a&pause&exit)
  6. )
  7. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=
  3. set /p zimu=输入任意两个字母:
  4. set zimu1=%zimu:~,1%
  5. set zimu2=%zimu:~1%
  6. 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 (
  7. if %%a==%zimu1% set n=dui
  8. if !n!==dui echo;%%a
  9. if %%a==%zimu2% set n=cuo
  10. )
复制代码
pause&exit
发表于 2015-10-20 14:09:05 | 显示全部楼层
本帖最后由 wutarnow 于 2015-10-20 15:00 编辑

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p ch=按字母顺序输入两个字母:
  4. set result=这两个字母中间是:
  5. set table=a b c d e f g h i j k o m n o p q r s t u v w x y z
  6. for %%I in (%table%) do (
  7.     if /i %%I GTR %ch:~1,1% goto Finish
  8.     if /i %%I GEQ %ch:~,1% set result=!result! %%I
  9. )
  10. :Finish
  11. echo %result%
复制代码
发表于 2017-2-23 14:41:24 | 显示全部楼层
各位前辈都没有用到delims=,我也来交个答案。
  1. @echo off
  2. set "var=abcdefghijklmnopqrstuvwxyz"
  3. set /p input=请按先后顺序输入两个字母(如 af ,不能输入 fa):
  4. for /f "tokens=2 delims=%input:~0,1%%input:~1,1%" %%a in ("%var%") do echo;%%a&pause>nul
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:45 , Processed in 0.023349 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表