标题: [已解决]批处理set /p 有无办法只限定输入一个字符后自动回车? [打印本页]
作者: xjiain 时间: 2011-8-5 22:50 标题: [已解决]批处理set /p 有无办法只限定输入一个字符后自动回车?
set /p 有无办法只限定输入一个字符后自动回车。。
比如,输入一个a后,自动回车,赋值,继续往下执行。
谢谢2楼的朋友提供的帮助,这么一个内部命令 choice 轻松解决了。也无需再用第三方工具CKEY。
打开CMD窗口。键入 choice /? 就能看到中文说明。
例:
choice /c 123456 /m 提示信息
其结果变量以然是 %errorlevel%
即可以 echo %errorlevel%
作者: Hello123World 时间: 2011-8-9 14:50
set不行,choice可以实现,不过choice后一定要跟goto。- @echo off
- choice /c:yn /m:"其输入y or n"
- if Errorlevel 2 goto n
- If ErrorLevel 1 goto y
- exit
- :y
- echo 输入的是y
- pause>nul & exit
- :n
- echo 输入的是n
- pause>nul
复制代码
作者: CUer 时间: 2011-8-12 14:00
1、choice不是内部命令
2、Vista和Win7有choice但是XP没有
作者: wnsdt 时间: 2012-9-2 11:25
回复 3# CUer
同样的问题,能否不用choice实现?因为xp中没有choice命令
作者: CrLf 时间: 2012-9-2 18:18
回复 4# wnsdt
生成一个 com...- @echo off
- more +5 %0|debug asc.com>nul
- asc
- echo 您输入的字符内码为 %errorlevel%
- pause
-
- a
- mov ah,8
- int 21
- mov ah,4c
- int 21
-
- rcx
- 8
- w
- q
复制代码
作者: CrLf 时间: 2012-9-2 19:14
本帖最后由 CrLf 于 2012-9-2 22:50 编辑
来个更像 choice 的- @echo off&chcp 437|graftabl 936 >nul
- more +6 %0|debug test.com>nul
- echo 请输入 a b c 其中之一,将在退出码中返回用户输入在参数中的位置,若找不到则为 0
- test.com abc
- echo %errorlevel%
- pause
-
- a
- mov ah,8
- int 21 ;取输入
- mov dl,al
- mov si,82 ;参数指针
- ;loop:
- lodsb
- cmp al,dl
- jz 116 ;goto out:
- cmp al,d
- mov al,0
- jz 11a ;goto end:
- jmp 109 ;goto loop:
- ;out:
- mov ax,si
- sub al,82
- ;end:
- mov ah,4c
- int 21
-
- rcx
- 1e
- w
- q
复制代码
作者: plp626 时间: 2012-9-2 20:54
本帖最后由 plp626 于 2012-9-2 20:56 编辑
以前在cn-dos收藏的一个SC方法:- @sc | find /v /c ""
- @pause
复制代码
输入y, 与其他字符 结果不同。。
楼主可根据需要自己定制。。
作者: CrLf 时间: 2012-9-2 22:49
回复 7# plp626
哈,好办法,不过这里的 find 好像没有意义啊,是否是:复制代码
作者: plp626 时间: 2012-9-3 09:25
- @ECHO off
-
- for /f %%a in ('sc /?^|find /c /v ""')do if %%a gtr 45 goto:y
- echo 没有输入y
- pause
- exit
-
- :y
- echo 输入了y
- pause
- exit
复制代码
作者: 路过 时间: 2012-11-3 23:14
::这个吧 还可以限定时间
@echo off
title 自动输入字符
if "%1" equ "?" (ping/n 4 127.0>nul
call :rcx
ping/n 1 127.0>nul
exit)
start /b %~s0 ?
set /p d= 请在3秒内输入:否则自动输入
echo;%d%
pause
:rcx
start /b mshta vbscript:CreateObject("Wscript.Shell").SendKeys("a")(window.close)
start /b mshta vbscript:CreateObject("Wscript.Shell").SendKeys("{Enter}")(window.close)
作者: 路过 时间: 2012-11-3 23:16
运行两次
call :rcx
ping/n 1 127.0>nul
也可以
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |