現在のマシンからマップされたネットワークドライブにファイルをコピーするbatファイルがあります(1行、xcopyコマンド)。
サーバーにRDPすると機能します。ただし、スケジュールされたタスクとして実行し、ログインしているのと同じユーザーで実行するように構成すると、機能せず、エラー0x4が発生します。
これを達成する方法はありますか?
また、dsynchronizeを試してみましたが、synchronizedをクリックすると機能します。サービスとして実行すると、同じ問題が発生します。
私はそれを理解することができました。次のバッチファイルは、ローカルシステムアカウントとしても、スケジューラの下で機能します。
Net Use m: \\server\share /U:server\user password
xcopy C:\source m: /E /Y
毎回ネットワークドライブをマップし、そのドライブにコピーします
ネットワークドライブとしてマッピングせずに、ファイルをUNCパスにコピーすることが可能です。 UNCパスを引用符で囲んでみてください。
copy * "\\server\share"
引用符がないと、Windows7コマンドラインで「構文エラー」が発生しました。
リモートドライブをローカルPCにマッピングせずに、サーバーから他の何百ものサーバーにファイルをコピーしたいという同様の問題がありました。何百ものリモートマシンをローカルPCにマッピングするのに十分なドライブ文字がありませんでした。リモートドライブをマップしてコピーすることはできませんでした。
Copy、xcopy、またはrobocopyを使用して、自分の資格情報をcopyコマンドに指定できると思いました。しかし、どのcopyコマンドにも、リモートシステムに資格情報を提供するオプションはありませんでした。
上記の投稿のおかげで、ホストをループするだけの小さなバッチファイルを作成し、すべてのホストに対して1つのドライブマッピングのみを再利用することができました。
これが私のバッチファイルです...
echo @off
for /F %%j in (pchostslist1.txt) do (
Net Use z:\\%%j\c$ /user:domain\myusername mypassword
mkdir \\%%j\c$\tmp\mynewdir
xcopy c:\anyfile.txt \\%%j\c$\tmp\mynewdir
Net Use z: /delete
)
同様の問題があり、Net Useを使用する代わりに、スケジュールされたタスクの一部としてパスワードを保存するだけで済みました。チェックされている場合にのみローカルリソースにアクセスできると表示されていることに気づくでしょう。
誰がネットワークドライブをマッピングしますか?そして、基になるUNCネイティブパスの代わりに、マップされた名前を使用していますか?マッピングされたドライブはログインスクリプトで設定されているように聞こえるため、ログインしていない場合は実行されません。したがって、スケジュールされたタスクでは、UNCパスの正しい資格情報を持っていますが、マッピングされたドライブ文字はありません。