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

Posted

技术标签:

【中文标题】适用于 Windows XP 和 2003 的 Windows 批处理选择命令【英文标题】:Windows batch choice command for Windows XP & 2003 【发布时间】:2010-10-08 16:37:02 【问题描述】:

有没有办法提示用户通过在 XP 和 Windows 2003 服务器上运行的 Windows 批处理脚本进行输入(即:是/否)?似乎有些命令(即:选择)只能在一个操作系统上运行,而不能在其他操作系统上运行。

【问题讨论】:

【参考方案1】:

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

【讨论】:

超时和默认值怎么样?【参考方案2】:
SET /P RESULT=Y or N?
ECHO %RESULT%

【讨论】:

【参考方案3】:

请注意,SET /P 命令不支持与CHOICE 命令相同的所有功能。即:

不限制用户输入有效值 用户必须按回车键 您必须检查大小写差异(例如“A”与“a”) 在一定时间后无法默认选择某个选项

由于这些原因,我还是更喜欢使用CHOICE 命令而不是SET /P 命令。为此,您只需在批处理文件中包含 CHOICE.COM。您可以通过 MS-DOS 6.22 Supplemental Disk 从 Microsoft 下载 CHOICE.COM。这是链接:

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

【讨论】:

我相信 64 位 Windows 7 包括 CHOICE.EXE。至少,我的机器有它,而且我很确定我自己没有把它放在那里。 你是对的@aphoria,我的有choice.exe,我也没有把它放在那里:) DOS 6.22 实用程序的链接已损坏。我可以从 Windows 98 访问 CHOICE.COM,但我的 XP 系统不支持它;来自 32 位 Windows 7 的 CHOICE.EXE 似乎也无法在 Windows XP 系统上运行。虽然我不能说这个测试系统是“典型的”,但我的测试足够彻底,以至于这个答案在某些情况下似乎不可行。【参考方案4】:

这将基本上模仿选择的作用,您需要将其作为子程序放入批处理文件中。我也更喜欢选择,但我需要可以在 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]: "

到目前为止,它对我来说效果很好。

【讨论】:

【参考方案5】:

例如你可以使用这个:

SET /P ANSWER=y OR n?
If "%answer%"=="y" goto yes
If "%answer%"=="n" goto no

享受吧!

【讨论】:

【参考方案6】:

Windows Millenium 的 CHOICE.COM 在 XP SP3 下可以正常工作。 但是,我的语言是匈牙利语,但您可能会找到它的原始英文变体,例如搜索“windows millenium ebd”。

http://s000.tinyupload.com/index.php?file_id=57468192666746678653

【讨论】:

我已将它放在 C:\windows 中,以便可以从任何地方访问。 欢迎来到 SO。请直接在您的答案中提供解决方案。另请阅读:***.com/help/answering

以上是关于适用于 Windows XP 和 2003 的 Windows 批处理选择命令的主要内容,如果未能解决你的问题,请参考以下文章

适用于 XP 的 Windows 防火墙规则

如何使用适用于 Windows 8 的 Visual Studio Express 2012 创建适用于 Windows XP 的应用程序

适用于 Windows XP、7、8 应用程序的 USB 麦克风描述符

适用于 Windows XP Professional 的 WAMP 或 XAMPP

Windows定时删除某天前文件的批处理脚本

Windows 7 XP 模式和 Visual Studio 2003