Windowsタスクスケジューラでバッチファイルを実行する


155

私はバッチファイルdaily.batを持っています、これはコードです:

cd C:\inetpub\wwwroot\infoweb\factuur\cron
c:\PHP\php.exe -f ./cron_pdf.php
ftp -s:ftp_upload.txt ftp.site.be

また、Windows 7でタスクスケジューラを使用してタスクを作成しました。バッチを手動で実行するとすべてがうまくいきますが、タスクスケジューラで実行しようとしても何も起こりません。

私の行動は

'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat"

UACはオフで、私は管理者です。

これが機能しない理由は何ですか?


わからないこの質問はofftopicですが、あなたがより良い回答を得る可能性がある場合serverfault.comをそれのために。
Hans Olsson、2010

ありがとう、serverfaultにも投稿しようと思います
Ruben

これはあまりにも便利になりますserverfault.com/questions/734035/...
ルーベン

回答:


286

同じ問題に直面しましたが、バッチスクリプトを変更せずに別の解決策を見つけました。

私が見逃した唯一のことは、「アクション」設定-「開始(オプション)」オプションです。

タスクのプロパティ->アクションタブ->編集->以下のように入力します。

  1. アクション:プログラムを開始します
  2. Program / script:バッチスクリプトへのパス。C:\Users\beruk\bodo.bat
  3. 引数を追加します(オプション):<必要な場合-スクリプトによって異なります>
  4. 開始(オプション):バッチスクリプトの場所への完全なパスを入力しますC:\Users\beruk\(例:開始を引用符で囲まないでください)

次に[OK]をクリックします

わたしにはできる。幸運を!


8
元の投稿がかなり古いことを知っています。しかし、この問題の答えを出そうとしたとき、この投稿はグーグル検索のトップリンクの1つでした。だから私は調査結果を共有したいと思います。念のため、私も含めて誰もがこれを忘れています。
ガージ

4
「Start in(optional)」の値が実際に必要であるとは思いません。値がなくても、シンプルな自己完結型の.batファイルを実行できます。明確な手順に感謝します-簡単なウォークスルーを探している人に非常に役立ちます!
DCaugs 2013

23
@DCaugs、Start Inパラメーターセットがないと、スケジュールされたバッチファイルがまったく実行されません。(Windows 7)
Justin Skiles

2
この解決策は私にはうまくいきませんでした。@Arun Rajaの回答はうまくいきました。
Cagy79 2014

7
@DCaugsこれStart inが私にとってうまくいった主な理由です。
グスタボ

54

上記の方法はどれも機能しませんでした。チュートリアルで言ったように私はこの方法で試してみましたが、うまくいきました。

アクション:

Start a program 

プログラム/スクリプト:

cmd

引数を追加します。

/c start "" "E:\Django-1.4.1\setup.bat"

Win7 Proで私のために働いた。パスワードが設定されたアカウントが必要です(パスワードを空白にしても問題ありません)


1
私は同意します!Windows Server 2008では、これまでの解決策はどれも機能しませんでした。この答えでうまくいきました。ありがとう。
Cagy79

あなたに+2000をあげられたらいいのに。私は1日中さまざまなアプローチを試みてきましたが、あなたのソリューション以外はうまくいきませんでした。私はバッチファイルを起動する必要があり、そのバッチファイルが別のバッチファイルを異なるパラメーターで10回起動しました。コンソールからはすべてが正常に機能しましたが、タスクスケジューラは同時に4つを超えるプロセスを開くことを拒否しました。それは奇妙だった...あなたのテクニックで、10のプロセスすべてが開始されました。
イカルス

この方法でうまくいきました。ただし、スケジューラの[履歴]タブでは、タスクはcmdであり、起動する.batファイルではないため、タスクは即座に完了し、成功します。バックアップ操作であるbatファイルは2〜3時間で終了するので、その状態がわかりません。
azzurroverde

uステータスを通知するために、batファイルの完了時にメール通知を保持する必要があります。それは一方向です。
Arun Raja

これは、@ Ghaziの承認済み回答で述べられているように、指定されたディレクトリで実行するように設定する必要があるというヒントと連動して機能し、「最高の権限で実行」も選択されていることを確認します。
mheavers

43

Windows 8以降のタスクスケジューラでbatファイルがまだ機能しない人のために、私はGhaziの答えに付け加えておきたいことがあります。

1)[Actions]で、[Create Task]ではなく、[ Create BASIC task]を選択します。

それは私にとってそれを行いました、そして忘れてはいけない他の問題:

  1. オプションと表示されていても、バッチファイルへの開始パスを使用します。
  2. 必要に応じて、 [プログラムの開始]> [プログラム/スクリプト]エントリ、つまり「C:\ myscripts \ runme.bat」で引用符を使用します...
  3. ただし、開始フィールドには引用符使用しないでください。(クレイジーですが本当です!)

これは、コマンドプロンプトを起動する必要なく機能しました。

(申し訳ありませんが、担当者が少なすぎて、基本タスクのヒントをGhaziのコメントに追加できません)



7

それは現在働いています。これは私がやったことです。あなたはおそらくそれを機能させるためにこれらのすべてのステップを必要としないでしょうが、それらすべてを確実に試すために:

  • スケジュールされたタスクのアカウントパラメータを確認し、誰かがマシンにログインしているかどうかに関係なく実行するように設定されていることを確認します

  • ほとんどの権限/権利で実行を確認

  • 最初に絶対パスに移動してください:cd C:\ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • バッチファイルで二重引用符を使用しないでください(理由はわかりませんが、役立つようです)。

  • スーパー管理者になり、コマンドプロンプトで「Net user administrator / active:yes」と入力し、ログアウトしてスーパー管理者としてログインすると、UACがオフになります。


2
申し訳ありませんが、これは非常に不十分に書かれた答えです。正しい答えが受け入れられた答えとして選択されていることを確認します。
jwize 2014年

5

「開始」がバックスラッシュで終わっていないことを確認してください。


1
OSのバージョンやタスクの種類など、この情報が当てはまるものを教えてください。受け入れられた回答には\が含まれているため、一部のシステムで機能する必要があります-機能しない場所
lessthanideal

これにより、Windows Server 2012でスケジュールされた「foo.cmd」タスクが修正されました。「開始」を「C:\ Foo \」に設定すると、終了コードエラー0x8007001でタスクが失敗しましたが、「開始」が「C」に設定されています:\ Foo 'タスクは正常に実行されました。
アーロン

5

電源コードのないラップトップでタスクが実行されているという理由だけでタスクが起動しないという問題がありました... [条件]タブでは、AC電源が接続されていないときにタスクが実行されないようにデフォルトでチェックされています。


3

Windows7 Proで、Arunのソリューションがうまくいくことがわかりました。「ユーザーがログオンしていない」場合でもこれを機能させることができるので、最高の特権を使用することを選択しました。

過去の経験から、パスワードが設定されたアカウントが必要です(空白のパスワードは不適切です)。ウィザードの終了時にパスワードの入力を求められない場合は、戻って変更できるまで編集してください。

これがうまくいかなかった場合の方法です

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 

3

私はこれを数時間いじり、さまざまな提案を試みました。

次のようにして、ようやく機能しました。

アクション:プログラムを開始します

プログラム/スクリプト:C:\ scriptdir \ script.bat

引数を追加(オプション)script.bat

開始(オプション):c:\ scriptdir

ユーザーがログインしたときにのみ実行

最高の権限で実行する

構成:Windows Vista、Windows Server 2008


2

残りのすべてが失敗する場合は、タスクを実行しようとしているユーザーが、使用しようとしているファイルにアクセスできることを確認してください。

私の場合、C:\ Users \ Administrator \ Desktopからアカウントがアクセスできないバッチファイルを実行しようとしていました。C:\のニュートラルな場所に移動すると、問題は解決しました。


1

タスクの実行に使用するユーザーアカウントを確認してください。既定のユーザーとは異なるユーザーでタスクを実行し、このユーザーには追加の特権が必要になる場合があります。また、タスクが実行されることもありますが、バッチファイルはユーザーの応答を待機しているため、効果を確認できません。プロセスが実行されているのを確認したら、タスクマネージャを確認してください。あるWebページのsvn更新を含むバッチをスケジュールすると、svnがサーバー証明書の受け入れを要求したため、プロセスがハングします。


1
  1. cmd / batchファイルで二重引用符を使用しないでください
  2. (オプション)で始まる
    絶対パスに移動することを確認してください:C:\ Necessary_file \ Reqular_task \ QDE \ cmd_practice \

ここに画像の説明を入力してください



0

タスクスケジューラのメインウィンドウの[実行]ボタンを使用していくつかのバリエーションをテストすると、最終的に正しい設定が見つかりました。この2つのオプションを組み合わせる必要があります。-ユーザーがログオンしている場合にのみ実行-最高の権限で実行します。他のすべてのバリエーションは失敗しました。これに時間を浪費していると常に腹を立てますが、少なくともそれは機能します。OS:WINDOWS 8 CORE(BASIC)バージョン


0

高い権限でタスクを実行してみてください。

パスの最後に\を「c:\ temp \などの「フォルダ内の開始」に置きます

理由はわかりませんが、うまくいく場合があります。


0

アクション: Start a Program

プログラム/スクリプト: C:\Windows\System32\cmd.exe

引数を追加します。 /k start "" "E:\scripts\example.bat"

exitバッチファイルの最後に追加します。

を選択しRun whether user is logged in or notた場合、cmdウィンドウは表示されません。選択Run only when user is logged onしてウィンドウの動作を確認する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.