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

[文本处理] 批处理中 回车键的问题

  1. set /P test=" 1 xx,2 xxx :"
  2. IF /I %test%==1 goto next
  3. IF /I %test%==2 goto next2
复制代码
比如这个批处理,有两个问题请教下,

1  .  要选2,那按2就行,想问的是要怎么实现选1不要按1,按回车就代表选1呢,这个要怎么写,

2 .   还有一个问题是,比如选2,输入2以后要回车一下,要怎么实现输入2 ,不用按回车键就自动跳到 2 设定的指令,

回复 14# terse


    森马,int 16 这么方便

TOP

同样不支持 64 位
  1. @echo off
  2. >nul (chcp 437&graftabl 936)
  3. echo "1,2,3"
  4. (echo e100 CD 16 B4 4C CD 21&echo g&echo q)|debug>nul
  5. cmd /c exit /b %errorlevel%
  6. if "%=ExitCodeAscii%" == "2" goto :2
  7. :1
  8. echo 1
  9. goto end
  10. :2
  11. echo 2
  12. :end
  13. pause
复制代码
1

评分人数

TOP

回复 11# joannec


    第二个是用 16 位程序实现的,64 位 windows 系统已放弃对 16 位的支持

TOP

回复 10# DAIC


    各有利弊吧~choice 不能实现撸主要求的按回车则默认选 1

TOP

回复 9# CrLf

谢谢,,第一个不错,正在研究哈
第2个,好像win764 不兼容,

TOP

回复 9# CrLf


    Win7直接使用choice多好啊

TOP

本帖最后由 CrLf 于 2014-10-4 09:50 编辑

回复 7# xxpinqz


提供三个代替 choice 的方案,你一定会对第一个办法感兴趣:

1、sc+findstr 模拟 choice,在 win7 下通过测试:
  1. @echo off
  2. set "test=1"
  3. for /f "delims=" %%a in ('sc ^| findstr /x .') do set test=%%a
  4. ::win7 测试发现 findstr /v $ 也有相同效果,但无法理解为什么能读到 y
  5. echo test=%test%
  6. pause
  7. ::借鉴自 http://bbs.bathome.net/redirect.php?goto=findpost&ptid=13558&pid=116141
复制代码
2、ascode 生成 choice.com:
  1. @echo off&chcp 437|graftabl 936 >nul
  2. (echo RQPUWP]UZV_BBBB5``PY(E.(E3^)E5^)E:(E^>^)EFSX3CH^<P}pE^< ~r%%ooQRY2AY0@G uG0EGB?
  3. echo KO00O0KNX01K91200JMJKN2OLN9J8NNKO0001KNp01K93030JMJKN2OLKN0001_]XYZN9N810
  4. echo;K408LM2188L2KN8200JL38M0t083L0MK000t06NKO389O02L82K44LLM21
  5. )>"choice.com"
  6. ::这个 bat 是生成 "choice.com" 的模板,使用时可以直接复制
  7. choice.com 12
  8. if errorlevel 3 goto enter
  9. if errorlevel 2 goto 2
  10. if errorlevel 1 goto 1
  11. if errorlevel 0 goto error
  12. :: 下略...
  13. ::由 http://bbs.bathome.net/viewthread.php?tid=21888 算法生成
复制代码
3、powershell 调用 .net 的 console 类:
  1. [console]::readkey()
复制代码
使用第三方的办法就不提了...

TOP

回复 7# xxpinqz

搞定啦,,谢谢了,,你真是太谦虚了哈,,

TOP

本帖最后由 xxpinqz 于 2014-10-4 01:32 编辑

回复 6# joannec


    最简单的:
  1. @echo off
  2. choice /c 12 /m " 1 xx,2 xxx :"
  3. if %ERRORLEVEL%==1 goto next
  4. if %ERRORLEVEL%==2 goto next2
复制代码
应该是这么写吧,脑袋混乱中。。。,通用性不好,有些系统没choice

http://www.bathome.net/thread-1726-1-1.html
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 4# xxpinqz

哥们,,再请教下第2个能实现吗,,我不放在一起用,

TOP

回复 4# xxpinqz

恩,,就是它了,,谢谢哥们哈,,

TOP

回车默认1
  1. @echo off
  2. set "test=1"
  3. set /P test=" 1 xx,2 xxx :"
  4. IF /I %test%==1 goto next
  5. IF /I %test%==2 goto next2
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 2# xxpinqz

不敢强求同时实现,实现其中一个也行哈,,

TOP

貌似难了点,1与2不可兼得,当然泛指我这水平。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表