質問: robocopy許可が拒否されました robocopyはwindows 7にプリインストールされています。私はこれまで何度も使用しました。フォルダーをリモート共有にコピーしようとしましたrobocopy c:\source "\\server\share\path" /s /r:2 /w:2` その結果、私は許可が拒否されます。 explorerを使用して、この共有にファイルをコピーできます。同じ結果で、管理者権限でコマンドプロンプトを開きました。共有は一般公開されます。[〜#〜] edit [〜#〜]ドライブレターを共有に正常にマップしましたが、robocopyはまだ失敗します[〜#〜] edit [〜#〜]/bスイッチを追加しましたが、うまくいきませんでした。正確なエラーは次のとおりです。2009/09/26 20:43:14 error 5 (0x00000005) accessing destination directory \\drobo\drobo\fotos\__new\ericsson\
回答: これを自動的に修正するスクリプトを書くこともできます# to run robocopy with logging which logs errors robocopy source dest /mir /np /tee /r:0 /w:1 /fft /log+:log.txt # get errors from log and use set-content so it only writes if there are errors. get-content log.txt | select-string "0x00000005" | set-content errors.log #if statements to check if it even had errors. only if errors go into if statement. if (test-path errors.log) { #now capture the paths exactly. get-unique so it writes one error only once. #will assume you're using uncs to copy vs. drive letters, please modify as necessary select-string -path errors.log -pattern "\\\\.*$" | %{ $_.matches[0].captures[0].value} | get-unique > paths.log #just do foreach loop for each path. foreach ($path in $paths) { #use subinacl to take ownership and assign permissions, it is better and faster #than icacls and ps ways but you can use whatever works. report the changes you #made. if '$path' is a folder then you will need to modify subinacl command to #inherit etc. look it up. .\subinacl /file "$path" /setowner="your id" >> change-perms.log .\subinacl "$path" /grant="your id"=f >> change-perms.log } #run your robocopy command again to copy missed file in previous step. robocopy source dest /mir /np /tee /r:0 /w:1 /fft /log+:log.txt #delete the error log file so it does not go in to if loop next time you run. remove-item error.log (use force, erroraction etc as necessary) }