强制批处理文件对提示回答“是”

时间:2013-07-11 22:07:05

标签: windows batch-file

我已经在这里看到了这个问题,但是它似乎对我的具体例子不起作用。我是第一次写一个简短的批处理文件,我希望它执行的命令是:

net time \\compname /set

这通常会提示是或否确认。我想避免批处理文件,并看到有人说你可以添加:

echo y | net time...

但是,当我使用此命令执行此操作时,我可以看到它要求确认,然后立即执行此操作后会显示:“未提供有效响应。”

有没有人知道是否有一个我不知道的标志可以解决这个问题,或者为什么在这种情况下,被管道输入的回声会给出这个有趣的回应?

2 个答案:

答案 0 :(得分:8)

net time命令支持(未记录的)参数“/ yes”,因此这种情况下的答案非常简单:

net time \\compname /set /yes

答案 1 :(得分:0)

确认了这种行为。我想知道在NET运行时是否清除了输入流。如果我运行它并立即键入一些字符,它们会在最终给出提示后显示,但管道或文件重定向不起作用。一些旨在互动的计划确实具有这种令人沮丧的特征。

尝试这种解决方法,从计算机中检索时间,然后使用可以从管道获取数据的datetime进行设置。

for /f "tokens=6-7" %a in ('net time \\compname') do (
    echo Setting system time to %a %b
    echo %a | date > nul
    echo %b | time > nul
)

如果这是在批处理文件中,请记住对所有这些变量使用额外的%。感谢微软为编写脚本做了一件苦差事。