Windowsコマンドラインからジョブをスケジュールしますか?


15

Linuxには、cronジョブとatジョブがあります。Windowsのコマンドラインからジョブをスケジュールする方法はありますか?

タスクスケジューラ GUIは、私が後だものではありません。特定の条件でイベントをスケジュールするためにスクリプトを変更する必要があります...したがって、コマンドラインからこれを呼び出す方法が必要です。

回答:


13

Windowsには「作業中」もあります。構文は少し異なりますが。

C:\ Documents and Settings \ Administrator> at /?
ATコマンドは、次のコンピューターで実行するコマンドとプログラムをスケジュールします。
指定された日時。使用するには、スケジュールサービスが実行されている必要があります
ATコマンド。

AT [\\ computername] [[id] [/ DELETE] | / DELETE [/ YES]]
[\\ computername]時[/ INTERACTIVE]
    [/ EVERY:date [、...] | / NEXT:date [、...]] "コマンド"

\\ computernameリモートコンピューターを指定します。コマンドは
                   このパラメーターが省略された場合、ローカルコンピューター。
idは、スケジュールに割り当てられた識別番号です
                   コマンド。
/ deleteスケジュールされたコマンドをキャンセルします。idを省略すると、すべての
                   コンピューター上のスケジュールされたコマンドはキャンセルされます。
/ yesこれ以上使用しない場合、すべてのジョブをキャンセルするコマンドで使用
                   確認が必要です。
timeコマンドを実行する時間を指定します。
/ interactiveジョブがユーザーのデスクトップと対話できるようにします
                   ジョブの実行時にログオンしているユーザー。
/ every:date [、...]指定した各曜日にコマンドを実行します
                   月。日付が省略された場合、月の現在の日
                   想定されます。
/ next:date [、...]の次の出現時に指定されたコマンドを実行します
                   日(たとえば、次の木曜日)。日付を省略すると、
                   月の現在の日付が想定されます。
「コマンド」は、実行するWindows NTコマンドまたはバッチプログラムです。

例:

at 9:00 /interactive notepad.exe

これにより、ユーザーのメモ帳は午前9時に対話形式で開きます。


3
私たちが話すように、「で」は非推奨です。「schtasks」が今の道です。たぶん、あなたは正しい答えを変えることができます。
マリウス

15

schtasksコマンドを使用します。atコマンドよりも多くのオプションが/mo LASTDAYあり、月の最後の日には次のような素晴らしいオプションがあります。

schtasksは、定期的にまたは特定の時間に実行するコマンドとプログラムをスケジュールします。タスクをスケジュールに追加および削除し、タスクをオンデマンドで開始および停止し、スケジュールされたタスクを表示および変更します。

構文:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ mo modifier]
         [/ d日] [/ m月[、月...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s computer [/ u 
         [ドメイン\]ユーザー/ pパスワード]] 
         [/ ru {[Domain \] User | 「システム」} [/ rpパスワード]] /?

1

スリーププログラムを使用して遅延を行うWindowsシェルスクリプトを作成します。

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

独自のシェルウィンドウで実行します。このスクリプトを使用して、起動時に実行するようにcmd.exeを構成します。sleep数秒間スリープします:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Windows.h>

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);

    Sleep(n * 1000);

    return 0;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.