【问题标题】:How do I schedule a task at a random time via VBscript file?如何通过 VBscript 文件在随机时间安排任务?
【发布时间】:2023-04-02 19:25:02
【问题描述】:

我正在尝试编写一个 VBscript 来安排任务在随机时间开始。

当我双击 VBscript 时,它会在没有任何错误的情况下执行,但任务调度程序不会使用新任务进行更新。

sRndTime = Random2DigitNumber(08, 17) & ":" & Random2DigitNumber(0, 59) & ":" & Random2DigitNumber(0, 59)

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "SchTasks /create /tn New_Test_Task /sc WEEKLY /D MON,TUE /st " & sRndTime & " /TR ""C:\main_command.vbs"" /ru ""SYSTEM""", 1, True

Function Random2DigitNumber(iLower, iUpper)
Randomize
Random2DigitNumber = Right("00" & Int((iUpper - iLower + 1) * Rnd + iLower), 2)
End Function

我看不出这段代码的问题在哪里。

任何想法我做错了什么?

【问题讨论】:

  • 尝试读取返回值MsgBox CreateObject("WScript.Shell").Run("schtasks /create ...", 0, True)(0 - 成功,-2147467259 - 失败)。
  • 嘿omegastripes,谢谢!我运行它时收到消息“2147467259”。
  • 首先你必须开始使用SchTasks 命令。打开控制台(运行cmd.exe),输入脚本中正在执行的命令并检查结果、错误描述等。请在问题中添加任何详细信息,不要在 cmets 中发布。

标签: random vbscript scheduled-tasks


【解决方案1】:

在命令前添加 cmd /k。如果您不是以管理员身份运行,您将看到拒绝访问。除此之外,它还可以工作。

但这太疯狂了。您是程序而不是用户。做事程序的方式。

Set TS = CreateObject("Schedule.Service")
TS.Connect("ComputerName")

Set rootFolder = TS.GetFolder("\")

Set tasks = rootFolder.GetTasks(0)

If tasks.Count = 0 Then 
    Wscript.Echo "No tasks are registered."
Else
    WScript.Echo "Number of tasks registered: " & tasks.Count

    For Each Task In Tasks
    A=Task.Name
    A = A & " " & Task.NextRunTime
    wscript.echo A
    Next
End If

【讨论】:

  • 感谢 Noodles 的帮助,但我不明白这个答案如何适用于我的问题。执行时,您的答案会列出任务计划程序中的所有任务,但它不会创建任何具有随机触发时间的任务。你能编辑你的代码,让它在随机时间创建任务吗?
  • 我回答的重点是向您展示您需要的对象(Schedule.Service)。然后您搜索技术参考。它显示您使用RegisterTaskDefinition 创建一个。在此处查找示例代码。 msdn.microsoft.com/en-us/library/windows/desktop/…
  • 感谢您的链接。我想我可以按照微软文档中的示例代码组装代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2017-06-29
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
相关资源
最近更新 更多