2017年4月7日金曜日

PC タスク ログオンしているかどうかにかかわらず実行する

いやぁ、焦りました。
msdn への投稿で、 書いたはよいが 実際動かすと アウト!... 。
タスクスケジューラ で Robocopy を動かす件です。
エラーコード 16 等 で落とされちゃうんですよね。


エラーコード 16 とは こんなエラーです。
Serious error. Robocopy did not copy any files. This is either a usage error or an error due to insufficient access privileges on the source or destination directories.
by Bing Translator
重大なエラーです。Robocopy では、任意のファイルをコピーしていません。使用法エラーまたはソースまたは宛先ディレクトリに十分なアクセス権限によるエラーです。


あっ、書き忘れました。
私は、 Robocopy を実施する時は、サインインして コンソールで 実行経過を眺めながら です。
タスクスケジューラで自動実行した事はありませんし、
今後もその予定は無いでしょう。
単に、興味本位で覗いた msdn にあった ご質問 に、 こうすれば と書き込んだ後、 試して見た訳です。


書いたバッチはこんなコードです。   テストケースなので、USB メモリ から プログラムフォルダ へ です。.

robocopy F:¥Project2013¥Test "C:¥Users¥UserA¥Documents¥Visual Studio 2013¥Projects¥Test" /S /Dcopy:T

これをタスクスケジューラから実行させると ... 。
そう、 タスクは タスク ログオンしているかどうかにかかわらず実行する です。
あえなく 失敗! に終わります。


基本に立ち返りましょう。
ログオンにかかわらず つまり ログオフ或いは別ユーザー切り替え時の状態です。
OS のセッションで ターミナル になっていない 待機状態 か 誰もログインしていない 状態を想像して下さい。
当然、対話型の処理はアウトですし、
個人に設定された環境変数絡みも駄目です。
ネットワークパスも個人絡みですから落とされます。
簡単に考えれば、 ログオンせずに バックグラウンドで無言で淡々と行える処理 に当たりますね。
セッションがアクティブで無い状態でも実行出来る がポイントです。


さて、対処です。

最初に、失敗しているタスクを全て終了し削除します。
タスク (と必要ならバッチと) を作り直します。
処理するプログラムは 絶対パスで 記述します。
ネットワークパスは使わず、UNC パスにし、 実行時にアカウントがアクセス権を持つ事を確認します。
Robocopy の様に 標準出力に結果を吐き出すものは これを中止し ログをファイルに残します。
作業ディレクトリも指定します。 タスクスケジューラで プロパティ > 操作 > 編集 > 開始(オプション)(T): で指定。

   個人のセッションでは、ファイルの探査 が働きます。
   紐付けられた 実行ファイル を選んだり出来る あれ ですね。
   例えば、 xxx.txt と入れると メモ帳 (notepad.exe) が立ち上がったりする あれ です。
   notepad.exe だけでも、環境変数 Path のお陰で、セッション内 では立ち上がりますが、
   セッションの外では 駄目 です。  きっと。
   C:¥Windows¥System32¥notepad.exe と フルパス記述しましょう。
                    notepad.exe では例として宜しくない ですが。.


件のバッチは この様になります。

%windir%¥system32¥robocopy F:¥Project2013¥Test "C:¥Users¥UserA¥Documents¥Visual Studio 2013¥Projects¥Test" /S /Dcopy:T /Log:"C:¥Users¥UserA¥Desktop¥TestRobocopy.log"


これで、実行させると 一先ず 成功。

ふぅ~、 良い経験になりました。  まる。

                       そうそう、お断りして置きます。
                       ここで書いた内容は、対処療法的で、根幹を押さえているものではありません。
                       試行錯誤の結果から書いているので、
                       内容は 正確さを欠く と添え書きして置きます。

                       尚、英文ですが、 以下の Community Additions にも 類似の記載が ... 。
                        https://technet.microsoft.com/en-us/library/cc722152(v=ws.11).aspx 



0 件のコメント:

コメントを投稿