web-dev-qa-db-ja.com

タスクをすぐに実行するようにスケジュールするコマンドラインは何ですか?

atschtasks。しかし、それらを使用してタスクをすぐに実行する方法を理解できませんでした。 すぐにコマンドについて読んだことがありますが、私のWindowsバージョンにはそのようなコマンドはありません。

このコマンドをバッチファイルに含める予定ですが、そのため、開始時刻をハードコーディングできません。

7
Jader Dias

Schtasksコマンドは、定義されたタスクをすぐに実行できます。

From Schtasks.exeを使用してWindows Server 2003でタスクをスケジュールする方法

Schtasks/Run

スケジュールされたタスクをすぐに開始します。実行操作はスケジュールを無視しますが、タスクに保存されているプログラムファイルの場所、ユーザーアカウント、およびパスワードを使用して、タスクをすぐに実行します。

構文:

schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]] /?

したがって、タスクを定義して、必要なときにいつでもすぐに実行できます。

6
harrymc

キースの答え あなたのニーズに合うように作業する:

timeout /t X ; psexec -i -s Y

どこ

  1. timeoutは、Windows7のスリープを置き換えます。
  2. Xは、/tで定義された待機秒数です。ユーザーを禁止する場合は、/nobreakを追加します。続ける。
  3. psexecfrom Microsoft SysInternals インタラクティブに実行できます(-iローカルシステムとして-s)、初めてEULAを受け入れるには、psexecを1回起動するか、-accepteulaを追加する必要があることに注意してください。
  4. Yはあなたのコマンドです。

runasではローカルシステムとして起動できません。そのため、プロセス関連のタスクに PsTools を使用します。
スケジュールされたタスクまたはサービスを開始することは、私にとってはあまりにも多くの回避策のようです...


たとえば、 パトリックの答え は単純に次のように書き直すことができます。

timeout /t 120 ; psexec -i -s calc.exe
7
Tamara Wijsman

これにより、calc.exeが2分で開始されます。変更

set /A START_MIN=%%j + 2

時間間隔を変更する行。

for /f "delims=:. tokens=1,2" %%i in ("%time%") do (
set /A START_HOUR=%%i
set /A START_MIN=%%j + 2
)

IF %START_MIN% GEQ 60 (
call :AdjustStartTime
)

IF %START_MIN% LSS 10 SET START_MIN=0%START_MIN%

SCHTASKS /Create /SC ONCE /TN "My Scheduled Task Name" /RU "" /TR "C:\Windows\System32\Calc.exe" /ST %START_HOUR%:%START_MIN%

:AdjustStartTime
SET /A START_HOUR=%START_HOUR% + 1
SET /A START_MIN=%START_MIN% - 60
GOTO:EOF
3
Patrick Seymour

atを使用したくない場合は、メインプログラムの前にスリープするのが簡単な方法です。

sleep 10 ; mycommand

または、それをスクリプトに入れます。

1
Keith

パトリックS.の答え 私のニーズを満たしました。

ただし、/TRの後に引用符を付ける必要はなく、何らかの理由でスクリプトが壊れているように見えたことに言及したいと思います。

削除すると、彼のスクリプトはうまく機能しました!

私の使用法はOutlookのルールでした。スクリプトが呼び出され、プラグイン(messagesave)を使用して電子メールがドライブに書き込まれます。これは、オフィスのPCからWebサイトに投稿するためのものであり、バッチを呼び出す元のスクリプトは、ファイルが書き込まれる前に終了する必要があります。 'schtasks' TechNetページにアクセスした後でも、スケジュールされたタスクを適切に遅らせる方法を見つけるのに苦労しました。

0
Allan