批处理文件:按X以外的任意键退出

时间:2019-02-04 02:22:29

标签: batch-file cmd

我想为批处理文件的用户提供一个选项,即“按X继续,或任何其他键退出”。我希望“其他任何键”包含空格键,或者使用pause>nul

时通常导致批处理文件终止的任何其他键

一旦知道“用户按下X”或“用户按下X以外的内容”,我知道如何构造代码以退出或继续。我只是想不出如何得到那个结果。

我不想使用Set /P用户输入法,因为这要求他们先按字母数字键,然后按Enter。

我无法找到一种方法来使Choice /C方法接受“任何键”并且仅对一个特定键起作用。

TL; DR,有没有人有办法让批处理文件的用户按一个键,然后让文件确定该键是X还是Not X?

3 个答案:

答案 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

然后您可以继续执行程序。