バッチファイルを実行するスケジュールされたタスクを実行するときに、コンソールウィンドウを開いたままにしておきたいです。バッチファイルを実行することを意味する手動で実行すると、ウィンドウは開いたままになりますが、タスクスケジューラーでは開きませんが、タスクがまだ実行されていることがわかります。これを行うために最後に一時停止しました。
@echo off
TITLE PROCESS_MGR
tasklist /FI "IMAGENAME eq JOESMO.exe" | find /I "JOESMO.exe">nul &&(echo PROCESS
JOESMO.exe IS ALREADY RUNNING!
echo %DATE%
echo %TIME%
pause
) || (
echo JOESMO PROCESS IS NOT RUNNING
cmd /c start "JOESMO.exe" "C:\Users\xxxx\Documents\
Visual Studio 2010\Projects\Projects2013\JOESMO.exe"
pause)
私はこの提案cmd/k myscript.batを見つけましたが、Windows Server 2008のタスクスケジューラでタスクを作成しているので、これをどこに適用すべきかわかりません。タスクの編集アクションで引数の追加ボックスに/ kを追加しました。
[スケジュールされたタスク]ダイアログで、バッチファイルの名前の直前に実行されます(Program/script
。次のようなものがあります:
myscript.bat
に変更する
cmd
**引数の追加(オプション)エントリに次を追加します。
/k "C:\My Batch File Folder\MyScript.bat"
私のシステム(Win7 64ビット)でテストしたところ、完全に機能しました。このテキストを入力すると、作成されたコマンドウィンドウが開いています。 :-)
残念ながら、KenのソリューションはWindows 2008 R2 Stdサーバーでは機能しませんでした。schtasks.exeを使用してスケジュールされたタスクの設定を変更することにより、対話型ウィンドウを起動できました。
コマンドウィンドウで、次のコマンドを実行しました。
schtasks /Change /TN "My Task" /IT
ただし、スケジュールされたタスクが実行されているのと同じユーザーコンテキストとしてログインする必要があります。したがって、スケジュールされたタスクがローカルシステムの「taskaccount」を使用している場合、「taskaccount」ユーザーとしてシステムにログインする必要があります。
奇妙なことに、手動でタスクを実行したときに機能しましたが、スケジュールされた時間に開始されたときにポップアップしませんでした。
ケンの答えはうまくいきませんでした。
この方法を見つけました:
bATファイルで(EXEしかない場合は作成します):
start C:/Absolute/Path/To/MyScript.exe myScriptArg
チャームのように動作します!
注:スケジュールされたタスクでは、「ユーザーがログに記録されている場合のみ実行する」をチェックする必要があります
上記のすべてを試しましたが、うまくいきませんでした。これを機能させるために私がしたことは次のとおりです。
プラットフォーム Windows Server 2003 R2 SP2 ActivePERL v5.10.1
ステップ
DOSコマンドプロンプトウィンドウが常に開くようになりました。さらに重要なことは、タスクが正常に実行されて完了することです。注:スケジュールされたタスクRunAsユーザーisはサーバーにログインしています。
バッチファイルへのショートカットを作成し、それをアクションに追加します。私のために働いた