Home > Windows にまつわる e.t.c.

Copy-Item -Recurse の振舞


Copy-Item -Recurse がコピー先のフォルダー有無によって動作が異なるので、まとめてみました。

Copy-Item C:\SourceFolder D:\DestinationFolder -Recurse

C:\SourceFolder : コピー元フォルダー名
D:\DestinationFolder : コピー先フォルダー名

 

コピー元がフォルダー名(末尾の\なし)の場合

コピー元 コピー先 コピー先フォルダーの有無 振る舞い
フォルダー名 フォルダー名 なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされる
フォルダー名 フォルダー名\ なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされる
フォルダー名 フォルダー名 あり コピー先のフォルダー内にコピー元のフォルダーが作成される
フォルダー名 フォルダー名\ あり コピー先のフォルダー内にコピー元のフォルダーが作成される

 

コピー元がフォルダー名(末尾の\あり)の場合

コピー元 コピー先 コピー先フォルダーの有無 振る舞い
フォルダー名\ フォルダー名 なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされる
フォルダー名\ フォルダー名\ なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされる
フォルダー名\ フォルダー名 あり コピー先のフォルダー内にコピー元のフォルダーが作成される
フォルダー名\ フォルダー名\ あり コピー先のフォルダー内にコピー元のフォルダーが作成される

 

コピー元がフォルダー名+\* の場合

コピー元 コピー先 コピー先フォルダーの有無 振る舞い
フォルダー名\* フォルダー名 なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされるが、エラーになる
フォルダー名\* フォルダー名\ なし コピー先のフォルダーが作成され、コピー元のフォルダー内がコピーされるが、エラーになる
フォルダー名\* フォルダー名 あり コピー元のフォルダー内がコピーされる
フォルダー名\* フォルダー名\ あり コピー元のフォルダー内がコピーされる

 

うーん、xcopy みたいな動作をさせたいのですが、これを見ると、コピー先のフォルダー有無にかかわらず Copy-Item -Recurse の動作を安定させるには、コピー元\、コピー先\ とするのが良さそうですが、コピー元の階層が少し深かったりするとエラーになるので、コピー先のフォルダーの有無確認をするしかないかも??

xcopy C:\SourceFolder D:\DestinationFolder\ /s

これと同様な事をしたいのですが、以外と苦戦しています。

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.