如何安排任务(使用 schtasks.exe)运行一次并自行删除?

如何安排任务(使用 schtasks.exe)运行一次并自行删除?

我想从命令提示符(使用schtasks.exe)安排一项任务运行一次,并在完成后从任务计划程序库中删除任务条目。

查看使用指南后,我决定使用这个命令:

schtasks /create /TN SomeTaskName /TR“notepad.exe”/SC ONCE /ST 12:00 /Z

...但这给了我这个错误(我正在运行 Windows 10)

错误:任务 XML 缺少必需的元素或属性。
(40,4):结束边界:

在网上查找后,我发现此知识库文章这表明使用/V1切换到摆脱错误,但添加/V1我被要求输入当前用户密码来安排任务。我不想要这个。

有没有办法安排任务执行一次,然后在执行完成后从任务库中删除?

我尝试过这个,但是没有用:

schtasks /create /TN 某些任务名称 /TR "schtasks /delete /TN 某些任务名称 /F" /SC ONCE /ST 12:00

我想到的一个可行的解决方案是:

schtasks /create /TN SomeTaskName /TR “notepad.exe” /SC MINUTE /MO 1 /ST 12:00 /ET 12:02 /Z

它有执行三次任务后才停止的副作用。

答案1

由于您使用的是 Windows 10,您可能需要考虑使用 Powershell。我相信您可以使用它Unregister-ScheduledTask -TaskName applog -Confirm:$false来删除计划任务而无需确认提示。

其他人已报告类似问题,有用户建议添加-Compatibility V1(虽然我不确定这是否仍会产生用户凭证提示)。

答案2

此选项/z不能与启动类型一起使用once。如果使用该选项,/v1命令将无错误执行,但任务在下次登录/执行后不会被删除。

要删除任务,Windows 需要一个到期日期,而这是不可能的once

您可以“手动”删除任务,例如使用以下命令:

... /TR "cmd.exe /c notepad.exe && schtasks /delete /TN SomeTaskName /f" ...

此命令执行notepad.exe,等待其完成,如果成功则删除任务SomeTaskName。如果您想在发生错误的情况下删除任务,只需使用一个&

答案3

微软建议添加/V1到您的命令中以解决此问题。

https://support.microsoft.com/en-gb/kb/2004151

这将为你带来:

schtasks /create /TN SomeTaskName /TR "notepad.exe" /SC ONCE /ST 12:00 /V1 /Z

答案4

您可以使用 PowerShell 创建 ScheduledJob。在作业脚本的末尾,您可以删除该作业!。

Register-ScheduledJob -RunNow -Name "Archive-Scripts3"  -ScriptBlock {
  "test" | out-file -filepath c:\temp\test3.txt
  Get-ScheduledJob -Name "Archive-Scripts3" | Unregister-ScheduledJob -Force
}

相关内容