バッチファイルを実行することになっているスケジュールされたタスクがあります。バッチファイルは、それ自体で呼び出された場合はファイルを実行しますが、スケジュールされたタスクにラップされた場合は実行されません。
ダイアログは次のようになります。
私の場合、解決策は、マップされたドライブを完全修飾パスに置き換えることでした。したがって、代わりに:
XCOPY C:\DATA Z:\
(ここで、Zは\\SERVER\DATA$
にマップされたドライブです)
私はに変更しました:
XCOPY C:\DATA \\SERVER\DATA$
私は管理者としてタスクを実行しましたが、それは魅力のように機能しました。
これらのフォルダをネットワーク共有にコピーしようとすると、スケジュールされたタスクが「システム」として実行されるため、機能しません。この場合、タスクを実行するユーザーを指定する必要があります。
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ログファイルに詳細が記録されるため、コピーされたファイルの数などを確認できます。
推測します。しかし、可能性は高いです。 .batまたは.cmdの実行は、実際にはcmd.exeの実行を意味します。Windowsでは、いくつかの(セキュリティだと思います)理由から、cmd.exeは対話型ユーザーに対してのみ実行可能です。したがって、ユーザーがローカルにログインした場合にのみ実行できます。
いくつかのグループに、cmd.exeをシェドゥルタスクとして実行する権限を与え、このタスクを実行するユーザーをこのグループに割り当てます。