- - PR -
atコマンドで他サーバにコピーできません。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-02-21 10:23
お世話になっております。
環境: サーバA Win2000Server サーバB Win2000Server バッチ filecopy.bat バッチの内容 copy c:\\temp\\foo.bar \\\\B\\temp$\\ > c:\\temp\\copy.log バッチファイルはサーバAにあります。 サーバAからサーバBへfilecopy.batバッチをatコマンドで実行して定期的にファイルを コピーしようとしているのですが、サーバBにコピーできません。 手動でバッチファイルを実行するとコピーはできます。 また \\\\B\\temp$をx:にネットワークドライブに割り当てて copy c:\\temp\\foo.bar x:\\ > c:\\temp\\copy.log としてもコピーされません。 どうしたらコピーできますでしょうか? ご存知の方いらっしゃいましたらご教示お願いします。 | ||||
|
投稿日時: 2005-02-21 11:52
まず、atコマンドなんてレガシーなものを使うのはやめましょう。
Windows2000ならタスクスケジューラが利用できますし、 atコマンドで登録したものも結局はタスクスケジューラに登録されるだけです。 atは過去との互換性のために残されてる機能だと思ってください。 atコマンドでは、ジョブを実行するユーザがLocalSystemになってしまい、 実行するユーザを明示的に指定することが出来ません。 そのため、ネットワーク共有フォルダへのアクセスなんて出来ません。 手動で実行する際は、今ログオンしているユーザの権限で実行するからこそ うまく動作してるんでしょう。 タスクスケジューラでは、実行するユーザを明示的に指定できます。 | ||||
|
投稿日時: 2005-02-21 16:28
タスクスケジューラを使用すればよいのですが、会社の労働日のみファイルの コピーをしたいので、オラクルのテーブルに会社の労働日のデータが入っているので、そのテーブルを参照してPL/SQLでatコマンドのバッチファイルを作成しています。 環境情報として書いていませんでした。申し訳ありません。 タスクスケジューラ用のファイルを自動で作成することは可能なのでしょうか? ヘルプを見る限りタスクの追加で追加することしかできないようなのですが、 難しいでしょうか? | ||||
|
投稿日時: 2005-02-21 16:44
操作用端末などで XP が利用できるなら、at の代わりに schtasks を使用することで、実行アカウントを指定できます。
2000 しか使えないということであれば、atask.exe を使う方法も。 プログラムから完全に制御したいなら Task Scheduler API を使う。 | ||||
|
投稿日時: 2005-02-21 17:00
自分がやったときにはScript書きました。取り合えずMSのページをご覧ください
「タスクのスケジュール」 http://www.microsoft.com/japan/technet/scriptcenter/scripts/os/tasks/default.mspx | ||||
|
投稿日時: 2005-02-21 23:42
こちらだと、内部処理はAT Commandと一緒なので解決にはならないでしょうね。 | ||||
|
投稿日時: 2005-02-22 09:40
2000しか環境がありませんので、ataskを確認してみました。 が、うまく実行できません。 以下のような状況になっているのですが、どうしたら実行可能な状態にできるでしょうか? どこか自分の設定が間違っているでしょうか? atask --new test.job atask --set test.job ApplicationName "c:\temp\filecopy.bat" Account "account" Password "pass" TASK_FLAG_DELETE_WHEN_DONE 1 TASK_FLAG_DISABLED 1 wBeginYear 2005 wBeginMonth 02 wBeginDay 22 wStartHour 09 wStartMinute 09 TriggerType 0 を実行してタスクの画面を見ると無効になっています。 そのtestというタスクのプロパティを確認すると"実行する"というところにチェックが 入っていないのでチェックを入れるとスケジュールされるのですが、その時間になっても 実行されません(実行する時間の時はログオフしています)。 また、手動で実行すると実行できます。 atask --info test.job を実行した結果は以下のとおりになっています。 JobName: test.job ApplicationName: c:\temp\filecopy.bat Parameters: WorkingDirectory: Account: account Flag: TASK_FLAG_DELETE_WHEN_DONE Flag: TASK_FLAG_DISABLED wBeginYear: 2005 wBeginMonth: 2 wBeginDay: 22 wEndYear: 0 wEndMonth: 0 wEndDay: 0 wStartHour: 9 wStartMinute: 9 MinutesDuration: 0 MinutesInterval: 0 rgFlag: TASK_TRIGGER_FLAG_DISABLED TriggerType: TASK_TIME_TRIGGER_ONCE 申し訳ありませんがよろしくお願いします。 | ||||
|
投稿日時: 2005-02-22 10:12
井上です。
古くからある問題なんですけどねぇ… Task Scheduler サービスを、LocalSystem ではなくて、当該サーバにアクセス権を持つユーザーの資格で実行させれば解決しますよ。[サービス] 管理ツールで、サービスのプロパティ画面を調べてみてください。 _________________ www.kojii.net | ||||
