用于创建计划任务的 VBScript

2024-06-18

我正在尝试创建一个 VBScript,它创建一个批处理文件,然后创建一个计划任务来运行该批处理文件。到目前为止,我尝试过的所有操作都创建了批处理文件,但没有创建计划任务,并且我没有收到任何错误。这是我到目前为止所拥有的:

Option Explicit

Dim objFSO, outFile, wShell
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set outFile = objFSO.CreateTextFile("C:\test.bat", True)
outFile.WriteLine "Start www.google.com"
outFile.Close

Set wShell = CreateObject ("Wscript.Shell") 
wShell.Run "cmd SchTasks /Create /SC WEEKLY /D MON,TUE,WED,THU,FRI /TN 'Test Task' /TR 'C:\test.bat' /ST 16:30", 0

我试过了""Test Task"" and ""C:\test.bat"",并得到相同的结果。但是当我在命令提示符下运行以下命令时:

SchTasks /Create /SC WEEKLY /D MON,TUE,WED,THU,FRI /TN "Test Task" /TR "C:\test.bat" /ST 16:30

任务创建成功。

我尝试的另一种方法是创建 2 个批处理文件:一个用于打开网页的批处理文件,一个用于创建计划任务的批处理文件。然后我结束了运行task.bat文件在最后。这就是我为此所做的:

Option Explicit

Dim objFSO, outFile, wShell
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set outFile = objFSO.CreateTextFile("C:\test.bat", True)
outFile.WriteLine "Start www.google.com"
outFile.Close

Set outFile = objFSO.CreateTextFile("C:\task.bat", True)
outFile.WriteLine "SchTasks /Create /SC WEEKLY /D MON,TUE,WED,THU,FRI /TN ""Test Task"" /TR ""C:\test.bat"" /ST 16:30"

Set wShell = CreateObject ("Wscript.Shell") 
wShell.Run "cmd start ""C:\task.bat"""

这创建了批处理文件,但刚刚打开cmd最后什么也没做。

我的猜测是问题出在wShell.Run部分,但我的经验不够,不知道问题出在哪里。

我不知道从这里去哪里所以任何建议都会很棒。


作为 VBScript,您可以执行命令可以执行的任何操作。

以下是如何列出根文件夹中的计划任务。

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

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
    A = A & " " & Task.LastTaskResult
    wscript.echo A
    Next
End If

这是来自文档 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383665%28v=vs.85%29.aspx展示如何创建任务。

时间触发器示例(脚本)

此脚本示例演示如何创建在特定时间运行记事本的任务。该任务包含一个基于时间的触发器,指定激活任务的开始边界、运行记事本的可执行操作以及停用任务的结束边界。

以下过程描述如何安排任务以在特定时间启动可执行文件。

安排记事本在特定时间启动

  1. 创建一个 TaskService 对象。该对象允许您在指定文件夹中创建任务。

  2. 获取任务文件夹并创建任务。使用TaskService.GetFolder方法获取存储任务的文件夹和TaskService.NewTask方法来创建代表任务的 TaskDefinition 对象。

  3. 使用以下命令定义有关任务的信息TaskDefinition目的。使用TaskDefinition.Settings属性来定义确定任务计划程序服务如何执行任务的设置以及TaskDefinition.RegistrationInfo属性来定义描述任务的信息。
  4. 使用创建基于时间的触发器TaskDefinition.Triggers财产。此属性可让您访问TriggerCollection目的。使用TriggerCollection.Create方法(指定要创建的触发器类型)来创建基于时间的触发器。创建触发器时,设置触发器的开始边界和结束边界以激活和停用触发器。开始边界指定任务操作的执行时间。
  5. 使用以下命令创建要执行的任务的操作TaskDefinition.Actions财产。此属性可让您访问ActionCollection目的。使用ActionCollection.Create方法来指定要创建的操作类型。这个例子使用了一个ExecAction对象,表示执行命令行操作的操作。
  6. 使用注册任务TaskFolder.RegisterTaskDefinition方法。对于此示例,任务将在当前时间加上 30 秒启动记事本。

以下 VBScript 示例显示如何安排任务在注册任务 30 秒后执行记事本。

' This sample schedules a task to start notepad.exe 30 seconds
' from the time the task is registered.
'------------------------------------------------------------------

' A constant that specifies a time-based trigger.
const TriggerTypeTime = 1
' A constant that specifies an executable action.
const ActionTypeExec = 0   

'********************************************************
' Create the TaskService object.
Set service = CreateObject("Schedule.Service")
call service.Connect()

'********************************************************
' Get a folder to create a task definition in. 
Dim rootFolder
Set rootFolder = service.GetFolder("\")

' The taskDefinition variable is the TaskDefinition object.
Dim taskDefinition
' The flags parameter is 0 because it is not supported.
Set taskDefinition = service.NewTask(0) 

'********************************************************
' Define information about the task.

' Set the registration info for the task by 
' creating the RegistrationInfo object.
Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Start notepad at a certain time"
regInfo.Author = "Administrator"

' Set the task setting info for the Task Scheduler by
' creating a TaskSettings object.
Dim settings
Set settings = taskDefinition.Settings
settings.Enabled = True
settings.StartWhenAvailable = True
settings.Hidden = False

'********************************************************
' Create a time-based trigger.
Dim triggers
Set triggers = taskDefinition.Triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeTime)

' Trigger variables that define when the trigger is active.
Dim startTime, endTime

Dim time
time = DateAdd("s", 30, Now)  'start time = 30 seconds from now
startTime = XmlTime(time)

time = DateAdd("n", 5, Now) 'end time = 5 minutes from now
endTime = XmlTime(time)

WScript.Echo "startTime :" & startTime
WScript.Echo "endTime :" & endTime

trigger.StartBoundary = startTime
trigger.EndBoundary = endTime
trigger.ExecutionTimeLimit = "PT5M"    'Five minutes
trigger.Id = "TimeTriggerId"
trigger.Enabled = True

'***********************************************************
' Create the action for the task to execute.

' Add an action to the task to run notepad.exe.
Dim Action
Set Action = taskDefinition.Actions.Create( ActionTypeExec )
Action.Path = "C:\Windows\System32\notepad.exe"

WScript.Echo "Task definition created. About to submit the task..."

'***********************************************************
' Register (create) the task.

call rootFolder.RegisterTaskDefinition( _
    "Test TimeTrigger", taskDefinition, 6, , , 3)

WScript.Echo "Task submitted."

'------------------------------------------------------------------
' Used to get the time for the trigger 
' startBoundary and endBoundary.
' Return the time in the correct format: 
' YYYY-MM-DDTHH:MM:SS. 
'------------------------------------------------------------------
Function XmlTime(t)
    Dim cSecond, cMinute, CHour, cDay, cMonth, cYear
    Dim tTime, tDate

    cSecond = "0" & Second(t)
    cMinute = "0" & Minute(t)
    cHour = "0" & Hour(t)
    cDay = "0" & Day(t)
    cMonth = "0" & Month(t)
    cYear = Year(t)

    tTime = Right(cHour, 2) & ":" & Right(cMinute, 2) & _
        ":" & Right(cSecond, 2)
    tDate = cYear & "-" & Right(cMonth, 2) & "-" & Right(cDay, 2)
    XmlTime = tDate & "T" & tTime 
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于创建计划任务的 VBScript 的相关文章

  • 为什么我不想在安装时将 Python.exe 添加到我的系统路径中?

    我正在 Windows 7 上重新安装 Python 第一个对话框之一是 自定义 Python 屏幕 将 Python exe 添加到路径 的默认设置是 整个功能将不可用 我总是将其更改为 将安装在本地硬盘上 这不是问题 更改系统环境变量很
  • MY SQL - 错误代码:1010。删除数据库时出错(无法 rmdir;errno:13)

    当尝试删除 MySQL 中的数据库时 DROP DATABASE IF EXISTS temporarydata 我收到以下错误 Error Code 1010 Error dropping database can t rmdir tem
  • 如何在windows服务中发出HTTP请求? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想实现我的第一个 Windows
  • 适用于 Windows 的 D-Bus 等效项

    有人知道 Windows 的 Linux D Bus 机制吗 Thanks 选择你的毒药 http msdn microsoft com en us library aa365574 28VS 85 29 aspx http msdn mi
  • 如何在批处理文件中重复%random%命令?

    我想在有限的时间内重复批处理文件中的命令 此命令 echo random random random random random random random random random random 不是无限的 只为前任40次具有不同的数字
  • 批处理文件运行 npm start

    我有一个角度应用程序 可以使用命令启动npm start在控制台中 现在我想创建一个批处理文件 在启动时执行 npm install 这是我创建的批处理文件 前端 bat cd
  • 如何在 C# 中暂时清空 Windows-7 第二个显示屏?

    我尝试使用 ChangeDisplaySettingsEx 将其宽度和高度设置为 0 这会清空显示监视器 但当我将 W 和 H 设置回来 并恢复 dmPosition x 时 它就保持关闭状态 我的系统有两台显示器 我正在尝试暂时清空其中一
  • 写入输出-InputObject(,'测试')-NoEnumerate

    我认为这是一个仅适用于 PowerShell Windows 5 1 的错误 The NoEnumerate当通过命名提供输入时 开关不起作用 InputObject争论 以下函数返回False Function Test Write Ou
  • GDI 已加速。有谁知道这是什么时候发生的?

    概述这个问题的背景 在工作中我们使用 Dell Precision 工作站 我目前的电脑是 NVidia Quadro FX1700 我的团队正在开发实时数据采集系统的图形组件 因此 我们总是留意图形操作是否不会占用太多 CPU 时间 为了
  • 完美批量转发参数

    我有一个小的 python 脚本 args py import sys print sys argv 我怎样才能写一个 bat将所有参数转发给该脚本的包装文件 为了从测试中消除我的 shell 我将调用它 import subprocess
  • 如何在命令提示符中仅显示具有备用数据流的文件

    我知道要在命令提示符中显示所有文件 如果有 的备用数据流 这是命令dir R 但是 如果我只想显示具有备用数据流的文件 该怎么办 dir s r findstr e DATA or dir r findstr e DATA 第一个将在所有子
  • RAM 到 RAM 的 DMA 传输

    我的一个朋友告诉我 在 x86 架构上 DMA 控制器无法在两个不同的 RAM 位置之间传输 它只能在RAM和外设 如PCI总线 之间传输 这是真的 因为 AFAIK DMA 控制器should能够在位于总线上并具有地址的任意设备之间 特别
  • 如何区分触摸板生成的 WM_MOUSE*** 消息和鼠标设备生成的 WM_MOUSE*** 消息?

    我试过了GetMessageExtraInfo 这里提到 检测WM MOUSEMOVE是否是由触摸 笔引起的 https stackoverflow com questions 29857587 detect if wm mousemove
  • 如何正确调用 LsaLogonUser 进行交互式登录?

    我正在尝试使用 LsaLogonUser 创建交互式登录会话 但它总是返回STATUS INVALID INFO CLASS 0xc0000003 从网上查到的内存布局KERB INTERACTIVE LOGON结构很棘手 但我很确定我做得
  • 从 .NET 应用程序登录 Windows

    我认为它应该是一个Windows服务 当给定某些条件时 它应该执行登录到机器的操作 机器将在 登录屏幕 中检查网络服务 以了解登录时应使用的用户名和密码 这可以吗 我不想要 自动登录 Windows 功能 Thanks AFAIK 无法完成
  • 应用程序错误:故障地址0x00012afb(专家)

    我需要一些 光 来找到解决方案 可能有很多事情会导致这个问题 但也许有人可以帮助我 场景 Windows 服务器 24 7 运行 PostgreSQL 数据库和其他服务器应用程序 用于处理数据库上的任务等 有不同的服务器场景 30 具有不同
  • 如何在 Windows 路径中使用卷标?

    我想使用批处理文件从可移动驱动器复制文件 无论它获得的驱动器号是什么 到目前为止 还没有去 似乎没有任何现成的命令或第三方命令行工具可以处理基于卷标签的路径 我尝试了 FreeFileSync 但它可以大批量工作 并且我在这里需要精确的文件
  • 如何将 Windows 窗体应用程序 (C++) 设置为具有 Aero/Glass 背景?

    我正在使用 Visual Studio 2010 Pro 用 C 创建 Windows 窗体应用程序 我想创建一个透明背景 即使用 Aero Glass 效果 类似于它围绕 Windows 照片查看器中 UI 底部的方式 此时 我已经查看了
  • 使用批处理从文本文件中提取特定文本

    我正在尝试使用批处理代码从文本文件中提取特定文本 我需要从中提取数据的文件将有多行文本 并且行数会有所不同 这意味着指示器的位置也会发生变化 以下是文本文件的示例 File 1
  • 使用 VBScript 查询 Active Directory

    我要查询活动目录 http en wikipedia org wiki Active Directory使用 VBScript 经典 ASP 我怎样才能做到这一点 要查看 OU 的所有成员 请尝试以下操作 Set objOU GetObje

随机推荐

  • XML 渲染错误 Android 预览 N

    更新后我已将 android SDK 更新为 android Preview N 但收到此 xml 渲染错误 单击详细信息后 它显示以下堆栈跟踪如何避免这种情况 org jetbrains android uipreview Renderi
  • 文件系统文件名转义? C#

    我允许用户选择他想要的任何用户名 它可以是任何用户名 例如 AC Man 现在我需要为他创建一个目录 我使用什么函数来转义文本 这样我就不会出现 FS 问题 异常 无论您替换无效字符还是删除它们 总是存在发生冲突的可能性 如果我是你 我会为
  • Valgrind 输出中的错误摘要?

    我看过一些关于 valgrind 的帖子 但没有一篇帖子帮助我理解 valgrind 输出的解释 我用 valgrind 运行了两个程序 都有内存泄漏 测试 1 的示例输出 20422 LEAK SUMMARY 20422 definite
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Github Actions 进行部署

    我在用Github作为我的源代码控制 并使用Github 操作作为我的 CI CD 解决方案 我在某处有一个专用的 Windows Server 它接受发表我的仓库的版本 我有一个 Github Action 它可以构建 测试 发布和部署
  • 黑屏只是闪烁一会儿

    在我的 Windows Phone 8 应用程序中 我有一个搜索页面 其中有一个文本框供用户输入搜索关键字 输入默认SIP键盘的 Enter 键时将调用搜索 搜索结果显示在另一个页面中 为了在导航到结果页面之前隐藏键盘 我使用 this F
  • Android:使用 ObjectAnimator 平移具有视图尺寸小数值的视图

    看来旧的视图动画 translate scale等 不再被接受AnimationInflater 至少截至 ICS 而言 我在 4 0 4 中阅读了它的代码 它明确只需要 XML 元素set objectAnimator animator
  • 使用 Spring @Configuration 和 MethodInterceptor 拦截带注释的方法

    我需要使用 spring aop 拦截带注释的方法 我已经有了拦截器 它实现了 AOP 联盟的 MethodInterceptor 这是代码 Configuration public class MyConfiguration Bean p
  • 如何在屏幕上拖动图像

    谁能帮助我如何为可以在屏幕上拖动的图像编写程序 你能给我一个示例代码吗 多谢 我怎样才能为它制作游戏得分 我将感谢您的回复 imageView setOnLongClickListener new OnLongClickListener p
  • Angular CDK Overlay,更改默认覆盖容器

    有没有办法改变OverlayContainer 我创建了一个工具提示组件 但有时我想将叠加层附加到特定元素 默认情况下 叠加层附加到文档正文 以下是我创建叠加层的方法 private initOverlay void const posit
  • HighCharts - 两个 Y 轴,一个具有最大值

    我在使用 Highcharts 时遇到问题 我已将右 Y 轴设置为 min 0 和 max 100 它是 但它不起作用并生成 125 百分比 怎么了 http jsfiddle net SdTcU http jsfiddle net SdT
  • 如何在 Windows 10 上将 ipynb 文件与 Jupyter Lab(来自 Anaconda)关联

    我使用 Windows 10 Jupiter Lab 是从 Anaconda 安装的 我想交往ipynb使用 Jupyter Lab 保存文件 这样 当我双击ipynb文件应使用 Jupyter Lab 打开 我该怎么做 Install n
  • android中使用xml的新自定义字体方法

    随着 android 发布 O 预览版 添加了一个新功能 称为xml 中的字体 它很容易实现 但我没有什么疑问 让我首先添加最好的方法1 右键单击资源文件夹并前往新建 gt Android 资源目录 新的出现资源目录窗口 2 在资源类型列表
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do
  • Symfony2 中的 Composer 创建相同的资源两次(jquery、jqueryui)

    我将 jquery 和 jqueryui 添加到composer json require components jquery 1 11 dev components jqueryui 1 10 4 作曲家正在下载这两个库并将它们放入供应商
  • 如何在松开按钮后立即看到新的视频层?

    我有一个应用程序 用户可以按住按钮来拍摄视频 然而 当他们这样做时 带有视频播放的新图层不会立即出现 相反 有一个非常短的延迟 在用户松开按钮后 您可以看到相机仍然显示相机所看到的内容 延迟结束后 视频立即显示并开始播放 但是 我怎样才能使
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • WordPress - pre_get_posts 代替页面上的 query_posts

    我的情况有点复杂 我会尽量简洁地解释一下 我目前正在使用query posts修改我网站上自定义页面上的主查询 据我所知 它工作得很好 尽管我已经读到 由于多种不同的原因 使用 query posts 是不好的做法 那么 我为什么要使用qu
  • 用于创建计划任务的 VBScript

    我正在尝试创建一个 VBScript 它创建一个批处理文件 然后创建一个计划任务来运行该批处理文件 到目前为止 我尝试过的所有操作都创建了批处理文件 但没有创建计划任务 并且我没有收到任何错误 这是我到目前为止所拥有的 Option Exp