【问题标题】:How to read input from console in a batch file?如何在批处理文件中从控制台读取输入?
【发布时间】:2011-12-14 08:29:02
【问题描述】:

如何在批处理文件中从控制台读取输入?我想要实现的是 C 中 scanf 的功能。如何在批处理文件中做同样的事情?

【问题讨论】:

  • @Raymond:不,问题是将多个字符作为字符串从键盘读取到变量中。
  • 命令set /p 读取用户输入的任何内容,无论是一个字母还是多个。
  • @Raymond : 你能分享一个代码sn-p吗..

标签: windows batch-file cmd


【解决方案1】:

链接的建议副本中的代码 sn-p 读取用户输入。

ECHO A current build of Test Harness exists.
set /p delBuild=Delete preexisting build [y/n]?: 

用户可以输入任意数量的字母,并将输入到 delBuild 变量中。

【讨论】:

  • 注意:您可以将用户输入与%delBuild%一起使用
  • 必须注意echo !delBuild! 将在启用setlocal EnableDelayedExpansion 时为您提供更可靠的执行输出
【解决方案2】:

如果您只是想快速保持 cmd 实例打开而不是立即退出,只需执行以下操作就足够了

set /p asd="Hit enter to continue"

在脚本结束时,它会保持窗口打开。

请注意,这会将asd 设置为环境变量,并且可以替换为其他任何内容。

【讨论】:

  • 为此,有人发明了pause 命令。也是set /p,而不是set \p。
  • “大家都在说”,意思是已经给出了答案,没有更多信息的就不用下一个了
  • @jeb 你是对的。我的问题是它们包含变量和回声,而我不需要任何这些。我花了一两分钟来解析他们的答案,因为我没有批处理经验。我相信我的答案满足了适合我需要的最低限度的答案。
  • @Stephan 谢谢老兄,在这两个方面。我正在寻找一种方法来保持 cmd 实例在脚本完成后退出,仅仅暂停 X 时间是不够的。
  • @ArslanAhmad 我刚刚测试过,它仍然可以在cmd 上工作,但不是 Powershell。确保你使用的是正确的东西。
【解决方案3】:

除了现有答案之外,还可以设置一个默认选项,如下所示:

echo off
ECHO A current build of Test Harness exists.
set delBuild=n
set /p delBuild=Delete preexisting build [y/n] (default - %delBuild%)?:

这允许用户在想要输入默认值时简单地点击“Enter”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多