2016-07-13 12 views
2

サブディレクトリ内のサブディレクトリ、ファイル、ファイルを含むフォルダをコピーし、その構造を保存して以前存在しなかった新しい場所に作成したいとします。これは私のPowerShellのコード存在しない場所にフォルダ構造をコピーする

Copy-Item c:\development\powershell\folderone\* c:\development\powershell\foldertwo -recurse -Container 
Copy-Item c:\development\powershell\folderone\* c:\development\powershell\folderthree -recurse -Container 

foldertwoが存在し、空であり、folderthreeは存在しません。

foldertwoで構造が正しく作成されますが、folderthreeが作成されますが、サブ構造全体のすべてのファイルがすべてルートfolderthreeレベルに含まれています。 folderoneのサブフォルダは再作成されていません。ルートレベルのすべてのファイルをfolderthreeにしてください。

どうしたのですか?ここで

+1

私が問題を正しく理解している場合は、最初に 'Test-Path'を使って調べ、' false'として返ってきたらala [this](http:// stackoverflow。 com/a/16911470/2486496)ここに答えてください。 – gravity

+2

ありがとう、そのトリックでした – NZJames

+0

私は 'コピーアイテムc:\ test c:\ test2 -recurse -container'(' * 'なし)を使用すると、その動作を再現できません。サブフォルダ。あなたがソースとして '*'を付けて試してみると、エラーが発生し、すべてをコピーするわけではありませんが、ルートにあるものはダンプしません。ソースでアスタリスクなしで試しましたか? – TessellatingHeckler

答えて

2

は非常に基本的な、しかし完全に作業だと例をテストし、私が手の問題を理解し、その上での確認に構築:

$folderlist = ("foldertwo", "folderthree") 
foreach ($folder in $folderlist) 
{ 
    if (!(Test-Path "C:\Development\PowerShell\$folder")) 
    { 
     mkdir ("C:\Development\PowerShell\$folder") | Out-Null 
    } 
    Copy-Item c:\development\powershell\folderone\* c:\development\powershell\$folder -recurse -Container 
} 
+0

ここで助けてくれてありがとう...私はfoldernamesの外に1つのファイルがあるので、一度それをコピーすることはできますか? – Underdog

+0

これは自分自身で新しい質問を投稿して適切にrepを得る良い機会になります。@Underdog [質問]を読んでこのQ&Aにリンクして、質問をより簡単に展開することを検討してください。 :-) – gravity

2

私が理解から、質問はフォルダ構造を再作成についてです[ソース]から[宛先]までCmdLetsを使用するのは過酷な(そしてパフォーマンスの低下)ため、PowerShellでも実行できる単純なバッチコマンドをお勧めします。

xcopy [source] [destination] /T /E 

xcopyは、ファイルツリーとディレクトリツリーをコピーする機能です。 ヘルプは、ケースのusefultパラメータに関する情報を提供します。

/Tファイルはコピーされますが、ディレクトリ構造は作成されません。 に空のディレクトリまたはサブディレクトリが含まれていませんか。/T/Eには、

が含まれます。空のディレクトリやサブディレクトリをコピーします。 /S/Eと同じです。/Tを変更するために使用することができます。

関連する問題