次のようにschtasks
を使用してスケジュールされたタスクを作成するバッチファイルがあります。
schtasks /create /tn my_task_name
/tr "...\my_path\my_task.bat"
/sc daily
/st 10:00:00
/s \\my_computer_name
/u my_username
/p my_password
my_task.bat
が実行されると、新しいコマンドラインウィンドウが開かれる(実行後に閉じられる)という事実を除いて、問題なく動作します。
この新しいウィンドウを開かないようにしたい(つまり、タスクをクワイエットモードでバックグラウンドで実行する)。
使ってみようと思った
start /b ...\my_path\my_task.bat
しかし、方法はわかりません。バッチファイルからstart
を呼び出す必要があるため、その前にcmd /c
を付ける必要があります。これにより、新しいウィンドウが再び開きます。
どうすればこの問題を解決できますか?
最後に、このコードを使用して問題を解決しました。
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "...\my_task.bat" & Chr(34), 0
Set WshShell = Nothing
それをrun_my_task.vbs
に保存し、上記のようにschtasks
でrun_my_task.vbs
をスケジュールしました。
これを行うには、schtasksに/ RUオプションを指定します。このオプション
タスクを実行するユーザーアカウント(ユーザーコンテキスト)を指定します。システムアカウントの場合、有効な値は「」、「NT AUTHORITY\SYSTEM」、または「SYSTEM」です。
したがって、これを試してください
schtasks /create /tn my_task_name
....
/st 10:00:00
/ru "SYSTEM"
....
自分のアカウントとして実行するように設定したため、ボックスが表示されていると思います。次のいずれかを試してください。
1:ユーザーNT Authority\Systemとしてタスクを実行します
2:新しいアカウントを作成し、その資格情報を使用して実行するようにタスクを設定します
おそらくAT
コマンドを使用し、/interactive
スイッチを含めないでください。
例:AT \\my_computer_name 10:00AM /EVERY:M,T,W,Th,F,S,Su "...\my_path\my_task.bat"
My_task.batを実行するための特定の資格情報が必要な場合は、コマンドにRUNAS
を入力する必要があります。これは、I believeコマンドがスケジュールのセキュリティコンテキストで実行されるためです(タスクスケジューラ)「ローカルシステム」アカウントであるサービス。 BATファイルの前にRUNAS
コマンドとスイッチを追加すると、それが修正されるはずです。