atとschtasks。しかし、それらを使用してタスクをすぐに実行する方法を理解できませんでした。 すぐにコマンドについて読んだことがありますが、私のWindowsバージョンにはそのようなコマンドはありません。
このコマンドをバッチファイルに含める予定ですが、そのため、開始時刻をハードコーディングできません。
Schtasksコマンドは、定義されたタスクをすぐに実行できます。
From Schtasks.exeを使用してWindows Server 2003でタスクをスケジュールする方法
Schtasks/Run
スケジュールされたタスクをすぐに開始します。実行操作はスケジュールを無視しますが、タスクに保存されているプログラムファイルの場所、ユーザーアカウント、およびパスワードを使用して、タスクをすぐに実行します。
構文:
schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]] /?
したがって、タスクを定義して、必要なときにいつでもすぐに実行できます。
キースの答え あなたのニーズに合うように作業する:
timeout /t X ; psexec -i -s Y
どこ
timeout
は、Windows7のスリープを置き換えます。X
は、/t
で定義された待機秒数です。ユーザーを禁止する場合は、/nobreak
を追加します。続ける。psexec
from Microsoft SysInternals インタラクティブに実行できます(-i
)ローカルシステムとして(-s
)、初めてEULAを受け入れるには、psexecを1回起動するか、-accepteula
を追加する必要があることに注意してください。Y
はあなたのコマンドです。runas
ではローカルシステムとして起動できません。そのため、プロセス関連のタスクに PsTools を使用します。
スケジュールされたタスクまたはサービスを開始することは、私にとってはあまりにも多くの回避策のようです...
たとえば、 パトリックの答え は単純に次のように書き直すことができます。
timeout /t 120 ; psexec -i -s calc.exe
これにより、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
at
を使用したくない場合は、メインプログラムの前にスリープするのが簡単な方法です。
sleep 10 ; mycommand
または、それをスクリプトに入れます。
パトリックS.の答え 私のニーズを満たしました。
ただし、/TR
の後に引用符を付ける必要はなく、何らかの理由でスクリプトが壊れているように見えたことに言及したいと思います。
削除すると、彼のスクリプトはうまく機能しました!
私の使用法はOutlookのルールでした。スクリプトが呼び出され、プラグイン(messagesave)を使用して電子メールがドライブに書き込まれます。これは、オフィスのPCからWebサイトに投稿するためのものであり、バッチを呼び出す元のスクリプトは、ファイルが書き込まれる前に終了する必要があります。 'schtasks' TechNetページにアクセスした後でも、スケジュールされたタスクを適切に遅らせる方法を見つけるのに苦労しました。