web-dev-qa-db-ja.com

(schtasks.exeを使用して)タスクを1回実行し、それ自体を削除するようにスケジュールするにはどうすればよいですか?

コマンドプロンプトからタスクをスケジュールし(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回実行するという副作用があります。

6
Vinayak

Windows 10を使用しているため、Powershellの使用を検討してください。Unregister-ScheduledTask -TaskName applog -Confirm:$falseを使用すると、確認プロンプトなしでスケジュールされたタスクを削除できます。

他の誰かが 同様の問題 を報告し、ユーザーは-Compatibility V1を追加することを推奨しました(ただし、これでもユーザーの資格情報プロンプトが表示されるかどうかはわかりません)。

2
root

オプション/zは、開始タイプonceと併用すると機能しません。オプション/v1を使用すると、コマンドはエラーなしで実行されますが、タスクは次のログオン/実行後に削除されません。

タスクを削除するには、Windowsには有効期限が必要ですが、これはonceでは不可能です。

タスクを「手動」で削除できます。このようなものを使用して:

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

このコマンドはnotepad.exeを実行し、その完了を待ち、成功した場合はタスクSomeTaskNameを削除します。エラーが発生した場合でもタスクを削除する場合は、&を1つだけ使用します。

1
some guy

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
}
1
Barry MSIH

マイクロソフトは/V1をコマンドに追加して、この問題を回避してください。

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

これはあなたに与えるでしょう:

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