Windows XP ProとWindows7で同じスケジュールされたタスクを実行しています。XP Proは正常に実行され、Windows 7は常に0x2を返します(つまり、 「指定されたファイルが見つかりません」;ただし、コマンドスケジューラからの実行は問題ありません)タスクスケジューラUIの[最終実行結果]列。
スケジュールされたタスクは、.batファイルを毎日実行します。 .batファイルには、Perlスクリプトを実行するための呼び出しが含まれています。前の段落で述べたように、XPで問題なく実行されますが、Windows7ではダイスは実行されません。
Windows 7でのタスクは、「ユーザーがログオンしているかどうかにかかわらず実行する」に設定されています。この場合、私です。私はシステムの唯一のユーザーです。また、「最高の権限で実行」に設定されています。そして、それは隠されていません。 .batファイルはコマンドラインから完全に実行されます-期待どおりにPerlスクリプトを呼び出し、Perlスクリプトがその処理を実行します。
私はこの問題に対する適切な答えを探して広範囲に検索しました。これまでのところ、何も見つかりませんでした。このWin7のスケジュールされたタスクで悪魔は何をしているのですか?髪を抜く準備ができました。
私もこの問題を抱えていました。タスクスケジューラの0x2は、バッチファイルが見つからなかったと言っているようです。これは誤りでした-バッチファイルをログファイルに出力するためにいくつかのパイプ矢印(>>)を追加してから、スケジュールされたタスクを実行しました。
タスクスケジューラで0x2を取得したにもかかわらず、バッチファイルが実際に実行されていたのに、エラーが発生しました(ログファイルに表示されました)。
もう1つ試してみるのは、代わりにSYSTEMまたはNETWORKSERVICEとしてタスクを実行することです。
私はこれと同じ問題を抱えて解決しました。 [アクション]タブの[プログラム/スクリプト]で、バッチファイルの名前を入力します。 [開始(オプション):]セクションで、ファイルへのパスを引用符や終了スラッシュなしで入力します。
Cのルートのテストフォルダーからtest.batファイルを実行するための以下の例:
プログラム/スクリプト:test.bat
開始(オプション):C:\ Test
2台のWindows7SP1ワークステーション間でフォルダーペアをSyncToy2.1と同期しようとしました。最初は、ファイルを参照して、タスクの引数を追加しました。 0x2
のコードを返しました。 Microsoft TechNetでは、「開始」フィールドを使用して、ファイル名が正しい場所に解決されるようにすることをお勧めします。引用符や末尾のスラッシュを付けずにSyncToyディレクトリパスを[開始]ボックスにコピーして保存し、タスクを実行しました。結果は成功でした、コード0x0
!
私の場合、マップされたドライブを宛先として使用していましたが、ドライブがスクリプトのコンテキストでマップされなかった(ユーザーがログオフした)ため、そのマッピングを使用する前に、スクリプト内でドライブをマップする必要がありました。
例:
@echo off
Net Use Z: \\server\share /u:domain\username *password*
robocopy c:\folder Z:\backup /o /p /t /i /o /n /s
@Leviと同様に、マップされたネットワークドライブを使用していました。ただし、私の場合、より簡単な解決策は、UNCパスを使用して変更することでした。たとえば、この引数を使用する代わりに:
"W:\blah\script.py"
私は今この引数を使用します:
"\\file-server-02\path\blah\script.py"