Win2K8 R2のタスクでバッチが動作しない

このQ&Aのポイント
  • Windows2008 R2のタスクスケジューラでバッチファイルが実行できない状態になっています。
  • バッチファイルを直接実行させた場合には問題なく実行できますが、タスクスケジューラに登録して実行しようとすると、タスクスケジューラがすぐに終了し、バッチファイルのrobocopyが稼働しないようです。
  • バッチファイル内のrobocopyコマンドは正常に動作している他のバッチファイルでは問題なく動作しています。
回答を見る
  • ベストアンサー

Win2K8 R2のタスクでバッチが動作しない

Windows2008 R2のタスクスケジューラでバッチファイルが実行できない状態に陥っています。 環境・状況等は以下のとおりです。 ・バッチファイルを単体で実行させたときには、問題なく実行できる。 ・ネットワーク上のサーバのあるフォルダをrobocopyするジョブ。 ・タスクスケジューラから実行できている他のバッチファイルを流用して作成。(このジョブも別のサーバのバックアップをしている) ・実行結果は、0x1。 ・タスクスケジューラ登録時には、administratorで登録し、パスワードも入れている。 問題のバッチファイルを直接叩いたときには、何のエラーもなく、約3時間要するrobocopyでのバックアップが稼動しますが、 タスクスケジューラに登録して実行しようとすると、タスクスケジューラの履歴をみると、スタートはしているがすぐに終了して おり、バッチファイル内に記述したrobocopyが稼動していないようです。 バッチファイルの内容は ----------------------- @echo off set LOGFILE=c:\bat\fd_backup\backup.log date /t>%LOGFILE% echo 開始時刻>>%LOGFILE% time /t>>%LOGFILE% echo. >>%LOGFILE% echo Run backup.bat>>%LOGFILE% echo. >>%LOGFILE% ROBOCOPY \\server1\backup\ D:\BACKUP\server1-back\ /MIR /NP /FP /TS /COPYALL /TEE /R:0 /LOG+:%LOGFILE% echo. >>%LOGFILE% echo 終了時刻>>%LOGFILE% time /t>>%LOGFILE% ------------------------- もうひとつ登録してあるバッチファイルは、robocopyの全く同じコマンドで、対象としているサーバと保存先やログファイル名が 異なるだけで問題なくタスクとして稼動しています。 ネット上でいろいろと調べてチェックしてみましたが、おかしいところが見当たらず、困っています。 アドバイスよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • maesen
  • ベストアンサー率81% (646/790)
回答No.2

>問題のバッチファイルを直接叩いたときには、何のエラーもなく、約3時間要するrobocopyでのバックアップが稼動しますが、 タスクスケジューラではエラーとなって、バッチファイルの直接実行ではエラーとなると思ってよろしいでしょうか? そうであるならば、タスクで「全般」タブの「最上位の特権で実行する」にチェックが入っているか確認してみて下さい。

tarabooo
質問者

お礼

ありがとうございました。 「最上位の特権で実行する」で、ジョブはエラーを吐かなくなりました。 ただ、もうひとつ問題が発生しています。 バックアップ元のフォルダは、日々生成されるため、フォルダ名が毎日変わります。 robocopyで実行すると、まずバックアップ先のフォルダ/ファイルを全部消すことから始まって 消し終わってからcopyが走るようで、時間が倍近くかかってしまいます。 robocopyの前に、バックアップ先を消すようにしないとだめなようですね。 スクリプト調査中です。

その他の回答 (1)

  • maesen
  • ベストアンサー率81% (646/790)
回答No.1

問題点を切り分けていく必要がありそうです。 1. LOGFILEで指定したログファイルはどのような状態ですか? ファイルが出来ていて日付などの情報が入っていれば、バッチファイル上の問題点を絞れると思います。 ファイルが出来ていなければバッチ自体が起動していない可能性が高い。 この場合は、ユーザー・パスワードの設定、作業フォルダの設定、フォルダ権限の見直し。 2. バッチファイルのエラー内容 バッチファイルを実行した時のエラー内容を確認 こんな感じで標準出力、標準エラー出力をファイルに落とす。 [コマンド] > [出力ファイル] 2>&1 実際の記述はこんな感じでタスクスケジューラに設定 backup.bat > \xxx\err.txt 2>&1 既に実施ずみだったらご了承下さい。

tarabooo
質問者

お礼

ありがとうございました。 エラーログをだしたら一発でした。 ログファイルとバックアップ先のフォルダに権限が無かったという お粗末なお恥ずかしい結果でした。 助かりました!!

tarabooo
質問者

補足

すみません。 動いたと思ったら、やっはりだめでした。 今度は、「エラー: 監査管理のユーザー権利がありません。」というメッセージです。 コピー元もコピー先もドメインadminに対してフルコントロールを与えているのですが、 それでもだめなものでしょうか・・・

関連するQ&A

  • バッチファイルのタスク制御

    タスクスケジューラでバッチファイル(***.bat)を自動実行させたいのですが、実行してくれません。何かよい設定の方法があるのでしょうか?

  • バッチをタスクで実行

    お世話になります。 現在、XP端末にてバッチをタスクスケジューラにて実行してます。 3分間隔で実行しておりますが、タスクにバッチファイルを直接指定するとプロンプト画面が表示されてしまうため、バッチファイルのショートカットを作成し、タスクにはそのショートカットを指定しております。 で、今回Win7端末に当該タスクを移行するのですが、XP端末よりバッチファイル及びショートカットをコピー致しました。タスクスケジューラに登録しようとしましたが、XPと何か違います。。 XPだと『実行するファイル名』の箇所にショートカットを指定することができますが、Win7だとショートカットを指定しても、バッチファイルのパスに変わってしまいます。 例えば、c:\test.batへのショートカット.lnk を選択しても、c:\test.bat に変わります。 よって、タスクが実行されるとプロンプト画面が表示されることになります。 なお、手動でパス(c:\test.batへのショートカット.lnk)を入力し、タスクを実行すると実行結果が『指定されたファイルが見つかりません』とエラーになってしまいます。 パスを:\test.batへのショートカット としても同エラーになります。 どのようにすれば、タスクにショートカットを指定できるのでしょうか。 ご教授の程、宜しくお願い致します。

  • バッチファイルの実行方法

    Windows Server 2003で、Robocopy.exe(Resource KitToolsからインストールしたもの)の連続処理のために、下記のようなバッチファイル(.bat)を用意しました。 robocopy "D:\a" "F:\a" /E /copy:DT /NP /LOG:c:\robocopy.txt /TEE robocopy "D:\b" "F:\b" /E /copy:DT /NP /LOG+:c:\robocopy.txt /TEE .... コマンドの各行は間違っていないようです(cmd.exeに各行を打ち込んで実行すると正常に処理されます)。しかし.batをダブルクリックするとコマンドプロンプト画面内でバッチファイルの1行目がすごい勢いで流れるだけで、処理されません(コマンドプロンプトを強制終了するしかありません)。 最初は.batをダブルクリックすると正常に処理されていたのですが、急にこうなりました。なぜでしょうか? command.comから.batファイルを実行すると正常に処理されます。command.comから実行しないといけないものなのでしょうか? バッチファイルの拡張子を.batにするか、.comにするか関係があるでしょうか?

  • バッチファイルのタスクスケジューラでの実行について教えて下さい。

    AAAのパソコンのDドライブの111というフォルダを、ネットワーク経由でBBBのパソコンのDドライブの222という共有フォルダ内に333というフォルダ内へxcopyでコピーするバッチ(backup.bat)を作ってタスクスケジューラで1日1回自動実行させようと思うのですが、うまくいきません。どうすればよいのでしょうか? AAAパソコン:Windows2000 professional SP4        000フォルダ内にbackup.bat(共有フォルダではないです)        111フォルダは共有フォルダではないです        ユーザーアカウント⇒Administrator        パスワードはないです        BBBパソコン:WindowsXP professional SP2        222フォルダは共有フォルダ        333フォルダは222の共有フォルダの中        ユーザーアカウント⇒バックアップ        パスワード⇒123 バッチファイル(backup.bat)  ↓  net use \\BBB\222 123 /user:バックアップ  xcopy d:\111 \\BBB\222\333\ /E/C/F/H/R/K> d:\バックアップログ.log  net use \\BBB\222 /delete 上記バッチファイルをAAAパソコンの「タスクの実行するファイル名」に直接登録(d:\000\backup.bat)して実行させてみたのですが、タスクの詳細設定のログ表示でログを見ると、『タスクは次の終了コードで完了しました:(1).』となっていて実行されませんでした。 cmd.exe /c d:\000\backup.batでタスク登録してもだめでした。 バッチファイル(backup.bat)をダブルクリックして実行するとBBBパソコンにコピーできます。 タスク設定時の   実行するアカウント名⇒AAA\Administrator   パスワードはなし よろしくお願いいたします。

  • 日付付きのログファイル名

    バッチのログファイルを日付をつけて保存するようにしようと思っています。 ----------------------------------------------- set DATE=%date:~0,4%%date:~5,2%%date:~8,2% set logfile=c:\opt\BackupTools\log\BACKUP_%DATE%.log echo メッセージ >>%logfile% ----------------------------------------------- 1回目に実行時には期待通りBACKUP_20060909.logのようなファイルが出来たりしますが、2回目の実行になると出来たファイルに上書きされないし、新しく生成されるログファイルはBACKUP_2006099.logだったり、BACKUP_2006.logになったりしますが、何が原因なのでしょうか。

  • バッチファイルの環境変数の取り扱い

    robocopyでバックアップログを取るようなバッチファイルをインターネットで調べながら 作成してみました。 今日の日付がついて保存されるのですが、下記のhome用1個だけの時はうまくいったのですが 続けて他のフォルダももう1つ追加しようとしたところ、(4行目から6行目) 1.@rem ログの分別の為の変数設定home用 2.set logfile0m="D:\log\home_log_m\%date:~0,4%-%date:~5,2%-%date:~8,2%_backup.log" 3.robocopy "D:\home" "\\nas001\home" /mir /xa:sh /R:1 /W:2 /FFT /LOG+:"%logfile0m%" 4.@rem ログの分別の為の変数設定folder1用 5.set logfile1m="D:\log\folder1_log_m\%date:~0,4%-%date:~5,2%-%date:~8,2%_backup.log" 6.robocopy "D:\san1" "\\nas001\folder1" /mir /xa:sh /R:1 /W:2 /FFT /LOG+:"%logfile1m%" エラー: 無効なパラメーター #6 : "/LOG+:" と表示されて2個目のrobocopyがうまくいきません。 なぜうまくいかないのか考えてみたのは以下の通りです。 set というのを2つ使っているからうまくいかないのでしょうか? もしも上記のことが原因の場合、1個目のset(logfile1m)というのを無効化するといいのでしょうか? その場合無効(初期化?)の方法はありますか? ネットワークの接続などはうまくできています。 よろしくお願いします

  • バッチファイル(for文)がうまく動かない

    以下のようなバッチファイルをWin2008上で実行しようとしています ------------------------------ @echo on set LOGFILE=C:\a.log set CONF=C:\a.txt FOR /F "tokens=1-3 delims=," %%i in (%CONF%) do ( echo %%i %%j %%k > %LOGFILE% 2>&1 ) ------------------------------ C:\a.txtの中身はこのようになっています ------------------------------ a,b,c e,f,g ------------------------------ 期待する結果は「1.」なのですが.batを実行しても「2.」の結果がログに表示されます どのように修正すれば期待の結果が得られますでしょうか ※ちなみに.batの実行ではなくコマンドプロンプトで[%%]を[%]に変更すれば正常に実行できました 1. ------------------------------ a b c e f g ------------------------------ 2. ------------------------------ e f g ------------------------------

  • タスクスケジューラからのバッチ起動

    タスクスケジューラからのバッチ起動で動作せず困っております [環境] ・windows server 2008 システムディスク:C ・共有ディスクをLANにて接続 ネットワークドライブとしてD:に設定 [動作概要] ・バッチ(*.vbs,*.bat)、データ、ログをD:に配置 ・タスクスケジューラに*.vbsを登録 ・*.vbsからD:にある*.batを起動(WScript.Run) [事象] ・*.vbsをGUIよりダブルクリック/エンターキーでは問題なく起動 ・*.vbsをタスクスケジューラから起動するととまってしまう ・*.vbs内の*.batコール箇所をコメントして実行で動作は最後まで終了 ・*.bat単体で動作させても問題なく終了 ・*.batをタスクスケジューラで起動するととまってしまう *.bat内で(>D:)などのディレクトリ移動コマンドを入れてもとまってしまう [原因推測] ・タスクスケジューラからネットワークドライブが認識できない? ・*.vbsで実施するWScript.Runの実行者がsystemで、 ネットワークドライブの認識用の環境情報(unixでいうcshrcみたいなもの)を 読み込まないで動作する? [問] ・上記構成では動作ができないのでしょうか? ・実現可能な方法があればヒントでもほしい 大変複雑な内容になって申し訳ありませんが 何か察することがあればコメントください

  • WindowsServer2008でタスク実行

    困っています。 Dドライブ直下にバッチファイルでSQLplusを起動させ、同じディレクトリにある.sqlを実行させるファイルがあります。 このバッチファイルを手動で起動させデータを取得しようとするとsqlplusが起動し上手く処理が行われるのですが、タスクスケジューラに登録すると一瞬コマンドプロンプトの画面が開きすぐに閉じてしまいsqlplusが起動せず処理が開始されません。 webで色々調べてみましたがバッチファイルの先頭に @ECHO OFF cd /D %~ dp0をつけても駄目でした。 タスクスケジューラから右クリックして実行を選んで処理させるとこのタスクのプロパティの履歴には操作が完了されました。とタスクが完了しました。と表示されています。 一体、どのようにしたらバッチファイルが動くようになるのでしょうか? どなたか教えてください。 タスクスケジューラに登録したバッチファイルの内容は @echo off cd /D %~ dp0 d: sqlplus ユーザ名/パスワード@ネットサービス名 @X.sql exit です。 以上、よろしくお願いいたします。

  • batファイルで、call使っても戻ってこない

    こんにちは 教えてほしいことがあります。 batファイルで他のbatファイルを実行するためにcallで呼び出すと、処理がまた戻ってくる事を知り、 以下のようにやってみたのですが、戻ってきている様子がありません。 どこが間違っているのか教えていただければと思います。 以下file-backup.bat echo 処理開始 >> %LOG% date /t >> %LOG% time /t >> %LOG% C:\****\Backup\FastCopy198\fastcopy.exe /cmd=force_copy /auto_close /open_window /error_stop=TRUE /log /from_date="-2D" "D:\file2" "/to=\\********\file2" @echo off call "Z:\file-backup2.bat" echo 処理終了 >> %LOG% ←---これ以下がログファイルに表示されない time /t >> %LOG% echo. >> %LOG% ログに「処理終了」が入ってきませんので、callで戻ってきていないと判断しました。 環境はwinserver2008です。 ご教授お願いします。