start を記述せずに "C:\Users\Administrator\Desktop\***_api\app\**.exe" だけ記述してみてください。
試してみましたが、start を記述するとバッチファイルが実行されません。
「cd /d %~dp0 」や環境変数を変える「setx~」も不要です。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
exeファイルを定期的に起動させるため、batファイルを作って
それを毎日数回タスクスケジューラで起動させたいのですが、
タスクスケジューラで自動起動させようとしてもexeファイルの起動がしません。
いろいろネットを探しまくって原因を調べたのですがどうしても分からず
質問させていただきます。
以下、詳細です。
【環境】
Windows Server2022(AWSのLightsail内で運用)
【batファイルの中身(固有名詞の部分は***で隠しています)】
@echo off
cd /d %~dp0
setx /m PATH "%PATH%;C:\Users\Administrator\Desktop\****\app"
start C:\Users\Administrator\Desktop\***_api\app\**.exe
ただ単に「***.exe 」というファイルを起動させるためだけのbatファイルです。
最初はカレントディレクトリに関する「cd /d %~dp0 」や環境変数を変える「setx~」はありませんでしたが、
原因を探している過程で追加しました。
ただこれでもexeファイルは起動しません。
【タスクスケジューラ】
履歴を見ると「操作が完了しました」「タスクが完了しました」と出ており、前回の実行結果も
「この操作を正しく終了しました」(0X0)となっており正常に起動した履歴しかありません。
設定ですが、プログラム/スクリプトの欄にはdatファイルの場所を参照させています。
(;C:\Users\Administrator\Desktop\****\app)
開始(オプション)のところにはbatファイルのあるフォルダ「;C:\Users\Administrator\Desktop\****」
を入れています。
ユーザーがログオンしているかどうかにかかわらず実行する にチェックをつけており
「最上位の特権で実行する」にもチェックをつけています。
原因がbatファイルなのかexeファイルなのかタスクスケジューラなのかですが
ためしに同じbatファイルの最後に
「msg %username% /W test」
と一文追加すると、タスクスケジューラで設定した時間にちゃんとメッセージウィンドウが表示
されました。
なので、batファイルは正常に動いていると思います。
またbatファイルを手動で実行すると問題なくexeも動きます。
WindowsServer2022ではなく、私の個人PCで同じ設定をすると問題なくexeが起動しました。
もし何か分かる方がいらっしゃいましたら、何卒ご教授お願いいたします。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
start を記述せずに "C:\Users\Administrator\Desktop\***_api\app\**.exe" だけ記述してみてください。
試してみましたが、start を記述するとバッチファイルが実行されません。
「cd /d %~dp0 」や環境変数を変える「setx~」も不要です。
質問作成者が受け入れた回答
sato_kkk さま
バッチファイルの出力をファイルにリダイレクトして確認したらどうでしょうか?
例
| schtasks /create /tn testTask /tr "'C:\temp\testTask.bat' >C:\temp\TestTask.txt 2<&1" /sc once /sd 2023/10/28 /st 00:00 |
|---|
バッチファイルの先頭を @echo onにすれば実行したコマンドも表示されます。
exeの起動に失敗しているのであれば、エラーメッセージが表示されると思います。
試してみてください。
motosan様
ご回答ありがとうございます。
ファイルリダイレクトしてみたところ、出来たテキストの内容は
C:\Windows\system32>start C:\Users\Administrator\Desktop\**_api\app\**.exe
とだけ出ました。
どうやらexeファイルの起動までは行えているようです。
しかし起動しませんでした・・・。
と思っておりましたが、MyTheoryLife様のご回答も踏まえ「start」を記述せず、
コマンドプロンプトでタスクを作成したところ、exeが起動しました!
出来たタスクスケジュールの内容と今までの差異
・プログラム/スクリプト欄が""で囲われている
(これは以前試してダメだったのですが・・・)
・引数の追加欄が入っている(例にある「>C:\temp\TestTask.txt 2<&1」の部分)
・開始(オプション)が入っていない
以上を踏まえて、引数以外を起動したタスクと同じにして再度トライ。
→起動せず。よく分かりません><
なので、とりあえず起動したファイルリダイレクト用のタスクを流用して
しのいでみます。
ありがとうございました。
-追記―
もう一点、原因と思われる個所がありました。
タスクスケジューラのプロパティで
「ユーザーがログオンしているかどうかにかかわらず実行する」
↓
「ユーザーがログオンしているときのみ実行する」
に変えると起動しました。
exeファイルの実行権限に関係あったのでしょうか?
よく分かりませんです・・・><
MyTheoryOfLife様
ご回答ありがとうございます。
「start」を記述せずにbatファイルの中身を作ってみました。
先のmotosan様への返信に詳しく書きましたが、色々行ったところ
コマンドプロンプトから直接タスクを作成したら起動しました。
おそらく「start」が記述しないようにしたのもよかったのだと思います。
他にもいろいろ複合的な理由がありそうですが><
なんとかなりそうです。
ありがとうございました。
※motosan様への返信でお名前を間違ってしまい申し訳ありません!
start の構文は以下のとおりです。
START ["タイトル"] [/D パス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA ノード>] [/AFFINITY <16 進数の関係マスク>] [/WAIT] [/B]
[/MACHINE <x86|amd64|arm|arm64>][コマンド/プログラム] [パラメーター]
"タイトル" ウィンドウのタイトル バーに表示するタイトル。
START の直後に記述した " で囲んだ最初の文字列は、ウィンドウのタイトル バーに表示するタイトルとなります。
他のパラメータなしで [コマンド/プログラム] のパスを " で囲む場合は、その前に"" の空文字列でも良いですが、「ウィンドウのタイトル バーに表示するタイトル」が必要です。
「batファイルを手動で実行すると問題なくexeも動きます」ということなので、何か環境が違うのかもしれませんが!
追記
申し訳ありませんでした。
質問の batファイル内の startコマンドの引数は " で囲ってなかったですね。
この返信は無視してください。