Windows XP和2003的Windows批处理选择命令

6
有没有一种方法可以在Windows批处理脚本中提示用户输入(即:是/否),并且适用于XP和Windows 2003服务器?似乎有些命令(如:choice)只适用于某个操作系统而不适用于其他操作系统。
6个回答

8
使用带有 /P 开关的 SET 命令。

3
暂停一下并设置默认值怎么样? - Baczek

6
请注意,SET /P命令不支持与CHOICE命令相同的所有功能。具体来说:
  • 它不会限制用户输入有效值
  • 用户必须按回车键
  • 您必须检查大小写差异(例如,“A”与“a”)
  • 在一定时间后没有默认选择的方法
出于这些原因,我仍然更喜欢使用CHOICE命令而不是SET /P命令。要做到这一点,您只需要在批处理文件中包含CHOICE.COM即可。您可以通过MS-DOS 6.22补充磁盘从Microsoft下载CHOICE.COM。以下是链接:

http://support.microsoft.com/kb/117600


2
我相信64位的Windows 7包括CHOICE.EXE。至少,我的机器上有它,而且我非常确定我没有自己安装它。 - aphoria
你是正确的 @aphoria,我的电脑上也有 choice.exe,我也没有安装它 :) - MikeRoger
DOS 6.22实用程序的链接已经失效。我可以从Windows 98访问CHOICE.COM,但我的XP系统似乎不支持它;来自32位Windows 7的CHOICE.EXE也似乎无法在Windows XP系统上运行。虽然我不能说这个测试系统是“典型的”,但我的测试足够彻底,以至于这个答案在某些情况下似乎不可行。 - kbulgrien

6
SET /P RESULT=Y or N?
ECHO %RESULT%

2

这将基本上模仿choice的功能,您需要将其作为子程序放入批处理文件中。我也喜欢choice,但我需要一个可移植的东西,在Windows XP上运行。

然后,您可以修改此内容以接受其他“选项”,但是这将不区分大小写,并重复提示,直到用户明确输入Y、y、N或n为止。

:yesorno
set /p choice=%2
if /i NOT %choice% == n (
    if /i NOT %choice% == y goto yesorno
)
set "%~1=%choice%"
goto :eof

您可以通过以下方式调用此子程序:

call :yesorno answer "Do you want to continue? [Y/n]: "

到目前为止,它对我来说一直运作得非常好。


1
例如,您可以使用这个:
SET /P ANSWER=y OR n?
If "%answer%"=="y" goto yes
If "%answer%"=="n" goto no

享受吧!


-1

我把它放在C:\windows目录下,以便随时都能访问到。 - BlueWings
欢迎来到SO。请在您的答案中直接提供解决方案。同时,请阅读:https://stackoverflow.com/help/answering - Maciej Jureczko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接