我想为批处理文件的用户提供一个选项,即“按X继续,或任何其他键退出”。我希望“其他任何键”包含空格键,或者使用pause>nul
一旦知道“用户按下X”或“用户按下X以外的内容”,我知道如何构造代码以退出或继续。我只是想不出如何得到那个结果。
我不想使用Set /P
用户输入法,因为这要求他们先按字母数字键,然后按Enter。
我无法找到一种方法来使Choice /C
方法接受“任何键”并且仅对一个特定键起作用。
TL; DR,有没有人有办法让批处理文件的用户按一个键,然后让文件确定该键是X还是Not X?
答案 0 :(得分:2)
我知道您说过您不想使用Set /P
,但是我不确定问题出在字母数字键还是其他Enter键。
以下尽管未经测试,但不需要额外按回车键:
@Echo Off
Set "#="
Set /P "=Press X to continue :"<Nul
For /F Skip^=1^ Delims^=^ EOL^= %%$ In ('Replace ? . /U /W') Do If Not Defined # Set "#=%%$"
Echo(
If /I Not "%#%"=="X" Exit /B
Rem Your code goes here
答案 1 :(得分:2)
在复制之前,您可以使用xcopy
及其/W
选项按下一个键,而/L
开关实际上不复制任何东西,但列出要复制的文件:
@echo off
set "KEY=" & for /F "delims=" %%K in ('
2^> nul xcopy /L /W /I "%~f0" "%TEMP%"
') do if not defined KEY set "KEY=%%K"
setlocal EnableDelayedExpansion
if /I "!KEY:~-1!"=="X" goto :MoreCode
endlocal & exit /B
:MoreCode
echo {X} has been pressed.
pause
要检查按下的键,delayed expansion已启用,以避免在您按下"
时出现语法错误。
答案 2 :(得分:0)
您可以使用choice
命令:
@echo off
choice /c abcdefghijklmnopqrstuvwxyz0123456789 /n /m "Press X to continue, or any other key to exit."
cls
if not "%errorlevel%" == "24" exit
然后您可以继续执行程序。