コマンドプロンプトからタスクをスケジュールし(schtasks.exe
を使用)、1回実行し、完了後にタスクスケジューラライブラリからタスクエントリを削除します。
使用ガイドを確認した後、私はこのコマンドに落ち着きました:
schtasks/create/TN SomeTaskName/TR "notepad.exe"/SC ONCE/ST 12:00 /Z
...しかし、それは私にこのエラーを与えます(私はWindows 10を実行しています)
エラー:タスクXMLに必要な要素または属性がありません。 (40,4):EndBoundary:
オンラインで調べたところ、 このKB記事 がわかりました。これは、/V1
スイッチを使用して削除することを推奨していますエラーの追加時/V1
タスクをスケジュールするために現在のユーザーパスワードを要求されます。それは欲しくない。
タスクを1回実行し、実行完了後にタスクライブラリから削除するようにスケジュールする方法はありますか?
私はこれを試しましたが、うまくいきませんでした:
schtasks/create/TN SomeTaskName/TR "schtasks/delete/TN SomeTaskName/F"/SC ONCE/ST 12:00
私がその仕事を思いついた無愛想な解決策はこれです:
schtasks/create/TN SomeTaskName/TR "notepad.exe"/SC MINUTE/MO 1/ST 12:00/ET 12:02 /Z
停止する前にタスクを3回実行するという副作用があります。
Windows 10を使用しているため、Powershellの使用を検討してください。Unregister-ScheduledTask -TaskName applog -Confirm:$false
を使用すると、確認プロンプトなしでスケジュールされたタスクを削除できます。
他の誰かが 同様の問題 を報告し、ユーザーは-Compatibility V1
を追加することを推奨しました(ただし、これでもユーザーの資格情報プロンプトが表示されるかどうかはわかりません)。
オプション/z
は、開始タイプonce
と併用すると機能しません。オプション/v1
を使用すると、コマンドはエラーなしで実行されますが、タスクは次のログオン/実行後に削除されません。
タスクを削除するには、Windowsには有効期限が必要ですが、これはonce
では不可能です。
タスクを「手動」で削除できます。このようなものを使用して:
... /TR "cmd.exe /c notepad.exe && schtasks /delete /TN SomeTaskName /f" ...
このコマンドはnotepad.exe
を実行し、その完了を待ち、成功した場合はタスクSomeTaskName
を削除します。エラーが発生した場合でもタスクを削除する場合は、&
を1つだけ使用します。
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
}
マイクロソフトは/V1
をコマンドに追加して、この問題を回避してください。
https://support.Microsoft.com/en-gb/kb/2004151
これはあなたに与えるでしょう:
schtasks /create /TN SomeTaskName /TR "notepad.exe" /SC ONCE /ST 12:00 /V1 /Z