如何从控制台读取批处理文件中的输入?


82

如何从控制台读取批处理文件中的输入?我要实现的是C语言中scanf的功能。如何在批处理文件中执行相同的操作?



@ Raymond:不,问题是从键盘将多个字符作为字符串读取到变量中。
Nohsib 2011年

该命令set /p读取用户键入的任何内容,无论是一个字母还是多个。
Raymond Chen

@ Raymond:您能在此分享一个代码片段
吗?

Answers:


141

链接的建议的重复项中的代码段读取用户输入。

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

用户可以输入任意数量的字母,该字母将进入delBuild变量。


35
注意:您可以将用户输入与%delBuild%
Jacob

1
必须注意的是echo !delBuild!setlocal EnableDelayedExpansion启用后将为您提供更可靠的执行输出
xacinay 2014年

29

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

set /p asd="Hit enter to continue"

在脚本的末尾,它将使窗口保持打开状态。

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


15
为此,有人发明了该pause命令。也是set /p,不是set \p
斯蒂芬

6
“正如每个人都在说”,这意味着已经给出了答案,因此无需再提供更多的信息了
jeb 2015年

1
@jeb你是对的。我的问题是它们包括变量和回显,而我不需要任何这些。由于我没有批处理经验,我花了一两分钟来解析他们的答案。我相信我的答案可以满足我的最低要求。
TankorSmash 2015年

@Stephan谢谢老兄,在这两个方面。我一直在寻找一种方法来保持cmd实例在脚本完成后退出,仅暂停X时间是不够的。
TankorSmash 2015年

我刚刚测试了@ArslanAhmad,它仍然可以从cmd,但不能从Powershell运行。确保您使用的是正确的东西。
TankorSmash

18

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

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

如果用户要输入默认值,则只需点击“ Enter”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.