web-dev-qa-db-ja.com

スケジュールされたタスクがエラー(0x4)で失敗するのはなぜですか

バッチファイルを実行することになっているスケジュールされたタスクがあります。バッチファイルは、それ自体で呼び出された場合はファイルを実行しますが、スケジュールされたタスクにラップされた場合は実行されません。

ダイアログは次のようになります。

enter image description here

3
mmcglynn

私の場合、解決策は、マップされたドライブを完全修飾パスに置き換えることでした。したがって、代わりに:

XCOPY C:\DATA Z:\(ここで、Zは\\SERVER\DATA$にマップされたドライブです)

私はに変更しました:

XCOPY C:\DATA \\SERVER\DATA$

私は管理者としてタスクを実行しましたが、それは魅力のように機能しました。

2
Nanookh

これらのフォルダをネットワーク共有にコピーしようとすると、スケジュールされたタスクが「システム」として実行されるため、機能しません。この場合、タスクを実行するユーザーを指定する必要があります。

ソース

0
cutrightjm

Robocopyユーティリティ (より堅牢なロギングとエラー処理のため)と Net Useコマンド を組み合わせて使用​​することで、これを回避することができました。

Net Use B: \\remote-machine\location RemotePassword /user:remote-machine\RemoteUserName

robocopy.exe B:\ D:\backups /NP /LOG+:D:\robocopy\robocopy.log /R:10 /W:5

このスクリプトは、リモートマシンに指定されたユーザー名とパスワードを使用して、リモートロケーションをネットワークドライブBにマップします。

次に、Robocopyは、ネットワーク上の場所にあるフォルダーの内容をD:\ backupsフォルダーにコピーします。これにより、指定されたrobocopyログファイルに詳細が記録されるため、コピーされたファイルの数などを確認できます。

0
GShenanigan

推測します。しかし、可能性は高いです。 .batまたは.cmdの実行は、実際にはcmd.exeの実行を意味します。Windowsでは、いくつかの(セキュリティだと思います)理由から、cmd.exeは対話型ユーザーに対してのみ実行可能です。したがって、ユーザーがローカルにログインした場合にのみ実行できます。

いくつかのグループに、cmd.exeをシェドゥルタスクとして実行する権限を与え、このタスクを実行するユーザーをこのグループに割り当てます。

0