SQL Reportサービスを停止および開始するための以下のコードを含むバッチファイルがあります。
net stop "SQL Server Reporting Services (MSSQLSERVER)"
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"
スケジュールされたタスクを毎日実行するように設定しましたが、現在は最高の特権が設定されたSYSTEMとして実行されています。アクションでフォルダーで開始オプションを設定しましたが、通常はすべてが正しく設定されているようです。しかし、タスクを実行すると何も起こらないようで、タスクは実行されたと表示されますが、意図したとおりにサービスが再起動されたことがわかりません。
誰かが私に欠けているものに導くことができますか?ありがとう
'Start in'および'Program/script'オプションを正しく設定してください。ファイルアドレスがC:\ Temp\foo.batの場合、「start in」オプションを「C:\ Temp」に、「Program/script」オプションを「foo.bat」に設定します。
[開始]オプションを設定するには:タスクスケジューラでタスクを右クリック> Properties > Actions > Edit.
これだけではうまくいかない場合は、.batファイルを基本的な権限を持つディレクトリ(たとえば、共有ディレクトリ)に移動してみてください。
.batファイルがいくつかの制限付きアクセス許可を持つフォルダーに配置されているため、ユーザーアカウントのみがアクセスできるという問題がありました。資格情報を使用するようにタスクスケジューラを設定したにもかかわらず、失敗しました。 .batファイルを別のディレクトリに移動すると、問題がソートされました。
この馬鹿げた問題に多くの時間を浪費しました!
バッチファイルの最初の行でバッチファイルが存在する場所にcdコマンドを追加し、問題が解決するかどうかを確認します。
cd D:\wherever\yourBatch\fileIs
ヒント:絶対パスを使用してください。相対パスは理想的には問題になりませんが、スケジューラーはそれらを理解するのが困難です。
同じ問題がありました。これは特権の問題だと思います。 [ユーザーがログオンしているときにのみ実行する]が選択されている場合は、実行されません。
あなたは今までにそれを理解したことを願っていますが、私はこれに時間を浪費している次の人のためにここに登録したかったです。
これはかなり古いスレッドですが、問題はまだ同じです-
私は複数のことを試しましたが、どれも機能しませんでした-
C:\Windows\system32\cmd.exe
をプログラムに追加し、/c myscript.bat
を引数フィールドに追加しました。これは私のために働いたものです-
プログラム/スクリプトフィールド-cmd
引数の追加-/ c myscript.bat
開始:myscript.batへのパス
私は同じ問題を抱えていて、どのソリューションも機能しませんでした。履歴を確認すると、問題がわかりました。この警告がありました
Task Scheduler did not launch task "\TASK_NAME" because instance "{34a206d4-7fce-3895-bfcd-2456f6ed6533}" of the same task is already running.
[設定]タブには、[タスクが既に実行されている場合、次のルールが適用されます]のドロップダウンオプションがあり、デフォルトは[新しいインスタンスを開始しない]です。実際に行う必要があることに基づいて、「新しいインスタンスを並行して実行する」または「既存のインスタンスを停止する」ように変更します。
私はそれが古いスレッドであり、複数のソリューションがここで優れていることを知っています、これはちょうど私のために働いたものです。それが役に立てば幸い。
Set 'Program/script'-> file.bat set 'Start in'残りのパス(file.bat)
同じ問題が発生した場合は、少なくとも「ユーザーがログオンしているときのみ実行する」にチェックを入れてください。これにより、batファイルが再び有効になります。
アプリケーションが「タスクスケジューラ」を介して起動できませんでした。
「イベントビューア」のエラー:System.IO.DirectoryNotFoundException
「タスクスケジューラ」は、「SYSTEM」ユーザーでこのアプリケーションを実行しようとします。問題は、「ネットワークドライブ」が「SYSTEM」ユーザーにマップされていないことでした。そこで、アプリケーションを起動する前に、「。bat」ファイルを作成して「ネットワークドライブ」をマッピングしました。
Net Use T: \\172.20.2.215\images
cd C:\MyApplication
start MyApplication.exe
最初にログを確認してください:「イベントビューア」-> Windowsログ->アプリケーション
解決策は、「ユーザーがログオンしている場合のみ実行する」オプションのチェックを外す(無効にする)ことです。
その変更の後、それは私のマシンで動き始めます。
以下のコードを試してください:
Batchfile.bat:
cd c:\batchfilepath
net stop "SQL Server Reporting Services (MSSQLSERVER)"
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"
私にとって、問題はネットワークドライブにcd
が含まれている.bat
が原因でした。これは失敗し、その後、そのネットワークドライブのプログラムへの呼び出しは何もしませんでした。
タスクのアクションの編集ウィンドウの引数の追加フィールドに> log.txt
を追加することでこれを理解しました。
1つの解決策は、'。bat'ファイルを'。vbs'ファイルで実行し、このvbsファイルをwindows schedulerで実行できることです。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("cron_jobs.bat"), 0, True
このようにして、問題が解決することを願っています。
私の問題はOneDriveが原因でした。 OneDriveは、バッチファイルが存在するフォルダーを同期していたため、タスクスケジューラがそれを実行できないようです。 (MSの誰もがこの種のものをテストしませんか?)
とにかく、バッチファイルをOneDriveにないフォルダーに移動することで、タスクスケジューラーでバッチファイルを開始できます。
runas
をサポートするWindowsシステム上。まず、次のように、そのユーザーとして実行されたコマンドラインからプログラムを起動して、プログラムを独立して実行します
runas /user:<domain\username> cmd
次に、その新しいコマンドラインで、cd
を使用して、たとえばタスクランチャーがプログラムを起動し、完全な引数を入力する予定のパスに移動します。
cd D:\Scripts\
、次に実行
C:\python27\pthon.exe script.py
タスクスケジューラによって抑制されているエラーは、コマンドライン出力に表示されるはずであり、デバッグが容易になります。