【问题标题】:From cmd.exe script, how can I schedule a task to run on next boot (and never again)?从 cmd.exe 脚本,我如何安排任务在下次启动时运行(并且再也不会)?
【发布时间】:2010-11-22 21:56:49
【问题描述】:

作为一个非常简单的cmd.exe 安装脚本的一部分,我需要在下次机器重启时运行一个程序。我不希望它在那之后运行(它是一个一次性配置工具)。

该程序实际上是另一个 cmd.exe 脚本,但任何示例都应该这样做,因为我可以在脚本本身上运行 cmd /c。

最好的方法是什么?

【问题讨论】:

  • 它必须在哪些 Windows 版本上运行?

标签: windows scripting cmd scheduled-tasks


【解决方案1】:

您可以使用SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

这个VB script 可以提供帮助。摘录:

workfile      = ifile.ReadLine
strcomputer   = ucase(left(workfile,instr(workfile,",")-1))
Set oReg      = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strcomputer & "\root\default:StdRegProv")

if err.number <> 0 then
 ofile.WriteLine "[" & now() & "] " & strcomputer & " will NOT run once. Failed to set runonce install with error: " & Err.Number & "/" & left(Err.Description,17) 
else
 sKeyPathEnv      = "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"
 sValueName       = "Set_RunOnce"
 sKeyPath     = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
 sValueName       = "SystemRoot"

 oReg.GetExpandedStringValue HKLM, sKeyPath, sValueName, sSystemRoot
 oReg.SetStringValue HKLM, sKeyPathEnv, "Set_RunOnce", vRunOnce

 if Err.Number <> 0 then
  ofile.WriteLine "[" & now() & "] " & strcomputer & " will NOT run once. Failed to set runonce install with error: " & Err.Number & "/" & left(Err.Description,17) 
 else
  ofile.WriteLine "[" & now() & "] " & strcomputer & " will run once via runonce at next reboot. "
 end if
end if

【讨论】:

  • 或者,您可以使用 REG.EXE 来完成同样的事情。我通常更喜欢 REG.EXE,而不是让脚本语言更加令人费解。
  • @Krim:是的,这里的脚本语言只添加了日志和错误管理。如果你不需要那个额外的级别,reg.exe 就足够了。
  • 我猜是默认获胜者 :-) 不,实际上这是一个很好的答案,我们确实需要错误处理,所以我可能会在 VBScript 中进行。谢谢,VonC。
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 2016-07-14
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2015-07-14
  • 2018-02-18
相关资源
最近更新 更多