2017-03-28 19 views
1

こんにちは私は、アイテムをコピーしてそれをすべてのサブフォルダを含む宛先フォルダに貼り付けるべきスクリプトを持っています。しかし、私はそれをサブフォルダにアイテムをコピーすることはできません。ここでPowershell:再帰が機能しないのはなぜですか?

はコードです:

Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\Performance Snapshot Macro.xlsm" -Destination "\\postowl\PEC Group\HR\Performance snapshot\2017-2018" -Recurse -Force 

助けてください!

答えて

0

Recurseは、ディレクトリ構造を保存して、ソースからデスティネーションにサブフォルダとアイテムをコピーします。目的地で再発したり、目的地で複数のコピーを作成したりすることはありません。 Get-ChildItemの出力からForEach-Objectループを使用して、コピー先のすべてのフォルダを取得することができます。

Get-ChildItem "\\postowl\PEC Group\HR\Performance snapshot\2017-2018" -Directory -Recurse | % { 
Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\Performance Snapshot Macro.xlsm" -Destination $_.fullname -Force } 
+0

ありがとう:

は、ドキュメントやPSの問題を参照してください。しかし、残念ながらそれは働かなかった。構文のどこかで "ForEach"を指定する必要はありませんか? – user2944011

+0

'%'は 'ForEach-Object'のエイリアスです。 '$ _'の後に' .Fullname'をインクルードするのを忘れました。答えは修正で編集されました。 – BenH

+0

BenHありがとう、これは完全に働いた。 – user2944011

0

私の観察から2つのもの。

1)サブフォルダを含むアイテムをコピーしていると伝えていますが、ソースに拡張子の付いたファイル名を記述しています。あなたのケースにフォルダ名があるかどうかは分かりません。

2)最終的なレベルのフォルダには入っていないことがわかりました。

だから、これを入れて確認してください。

Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\*.xlsm" -Destination "\\postowl\PEC Group\HR\Performance snapshot\2017-2018\" -Recurse -Force 

注:その特定のファイルならばそれは拡張子.xlsmを持つすべてのファイルをコピーしますので、あなたは、ワイルドカードを削除することができます。あなたがそのフォルダの下に1つのファイルしか持っていないと仮定しているので、私はそれを保管しています。迅速な応答のための Copy-Item Nature & Issue

関連する問題