强制批处理文件回答提示为是

5

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

net time \\compname /set

通常会提示是否确认。我希望避免在批处理文件中出现此提示,有人说可以添加以下内容来解决:

echo y | net time...

然而,当我使用这个命令时,我可以看到它要求确认,紧接着有一行说:“未提供有效的响应。”

有人知道是否有我不知道的标志可以解决这个问题,或者为什么在这种情况下管道中的echo y会给出这样奇怪的响应吗?

2个回答

8

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

net time \\compname /set /yes

2
这也适用于断开与所有网络共享的连接 - net use * /DELETE /yes - Tim Dearborn
这也适用于停止服务 net stop <servicename> /yes - Abdul Rauf
我知道这是老的内容,但是我找不到任何有关使用/YES作为参数的文档。唯一提到YES的是用于/PERSISTENT: - lit

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
)

记得在批处理文件中使用额外的%来表示所有这些变量。感谢微软让脚本编写成了一项艰巨的任务。


啊,谢谢你的帮助。不幸的是,这种解决方法会失去第二/毫秒的精度。 - Colin
真遗憾。我猜你需要寻找更好的工具来完成这项工作,或者配置NTP服务,而不是批处理它:http://www.timetoolsglobal.com/2013/06/21/how-to-synchronize-microsoft-windows-to-a-ntp-server-1/ - paddy

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