我想从命令提示符(使用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
}