标题: [文本处理] 批处理中 回车键的问题 [打印本页]
作者: joannec 时间: 2014-10-4 00:28 标题: 批处理中 回车键的问题
- set /P test=" 1 xx,2 xxx :"
- IF /I %test%==1 goto next
- IF /I %test%==2 goto next2
复制代码
比如这个批处理,有两个问题请教下,
1 . 要选2,那按2就行,想问的是要怎么实现选1不要按1,按回车就代表选1呢,这个要怎么写,
2 . 还有一个问题是,比如选2,输入2以后要回车一下,要怎么实现输入2 ,不用按回车键就自动跳到 2 设定的指令,
作者: xxpinqz 时间: 2014-10-4 01:06
貌似难了点,1与2不可兼得,当然泛指我这水平。
作者: joannec 时间: 2014-10-4 01:11
回复 2# xxpinqz
不敢强求同时实现,实现其中一个也行哈,,
作者: xxpinqz 时间: 2014-10-4 01:16
回车默认1- @echo off
- set "test=1"
- set /P test=" 1 xx,2 xxx :"
- IF /I %test%==1 goto next
- IF /I %test%==2 goto next2
复制代码
作者: joannec 时间: 2014-10-4 01:21
回复 4# xxpinqz
恩,,就是它了,,谢谢哥们哈,,
作者: joannec 时间: 2014-10-4 01:26
回复 4# xxpinqz
哥们,,再请教下第2个能实现吗,,我不放在一起用,
作者: xxpinqz 时间: 2014-10-4 01:30
本帖最后由 xxpinqz 于 2014-10-4 01:32 编辑
回复 6# joannec
最简单的:- @echo off
- choice /c 12 /m " 1 xx,2 xxx :"
- if %ERRORLEVEL%==1 goto next
- if %ERRORLEVEL%==2 goto next2
复制代码
应该是这么写吧,脑袋混乱中。。。,通用性不好,有些系统没choice
http://www.bathome.net/thread-1726-1-1.html
作者: joannec 时间: 2014-10-4 02:40
回复 7# xxpinqz
搞定啦,,谢谢了,,你真是太谦虚了哈,,
作者: CrLf 时间: 2014-10-4 09:45
本帖最后由 CrLf 于 2014-10-4 09:50 编辑
回复 7# xxpinqz
提供三个代替 choice 的方案,你一定会对第一个办法感兴趣:
1、sc+findstr 模拟 choice,在 win7 下通过测试:- @echo off
- set "test=1"
- for /f "delims=" %%a in ('sc ^| findstr /x .') do set test=%%a
- ::win7 测试发现 findstr /v $ 也有相同效果,但无法理解为什么能读到 y
- echo test=%test%
- pause
-
- ::借鉴自 http://bbs.bathome.net/redirect.php?goto=findpost&ptid=13558&pid=116141
复制代码
2、ascode 生成 choice.com:- @echo off&chcp 437|graftabl 936 >nul
- (echo RQPUWP]UZV_BBBB5``PY(E.(E3^)E5^)E:(E^>^)EFSX3CH^<P}pE^< ~r%%ooQRY2AY0@G uG0EGB?
- echo KO00O0KNX01K91200JMJKN2OLN9J8NNKO0001KNp01K93030JMJKN2OLKN0001_]XYZN9N810
- echo;K408LM2188L2KN8200JL38M0t083L0MK000t06NKO389O02L82K44LLM21
- )>"choice.com"
- ::这个 bat 是生成 "choice.com" 的模板,使用时可以直接复制
-
- choice.com 12
- if errorlevel 3 goto enter
- if errorlevel 2 goto 2
- if errorlevel 1 goto 1
- if errorlevel 0 goto error
-
- :: 下略...
- ::由 http://bbs.bathome.net/viewthread.php?tid=21888 算法生成
复制代码
3、powershell 调用 .net 的 console 类:复制代码
使用第三方的办法就不提了...
作者: DAIC 时间: 2014-10-4 11:02
回复 9# CrLf
Win7直接使用choice多好啊
作者: joannec 时间: 2014-10-4 13:40
回复 9# CrLf
谢谢,,第一个不错,正在研究哈
第2个,好像win764 不兼容,
作者: CrLf 时间: 2014-10-4 22:16
回复 10# DAIC
各有利弊吧~choice 不能实现撸主要求的按回车则默认选 1
作者: CrLf 时间: 2014-10-4 22:17
回复 11# joannec
第二个是用 16 位程序实现的,64 位 windows 系统已放弃对 16 位的支持
作者: terse 时间: 2014-10-4 23:11
同样不支持 64 位- @echo off
- >nul (chcp 437&graftabl 936)
- echo "1,2,3"
- (echo e100 CD 16 B4 4C CD 21&echo g&echo q)|debug>nul
- cmd /c exit /b %errorlevel%
- if "%=ExitCodeAscii%" == "2" goto :2
- :1
- echo 1
- goto end
- :2
- echo 2
- :end
- pause
复制代码
作者: CrLf 时间: 2014-10-5 00:11
回复 14# terse
森马,int 16 这么方便
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |