$files = Get-ChildItem -Path C:\Temp2\start\* -Recurse | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30) }
foreach($file in $files)
{
$DirectoryName = $file.DirectoryName -replace "start", "finish"
if(!(Test-Path -Path $DirectoryName))
{
New-Item $DirectoryName -ItemType Directory
}
$newLocation = $file.FullName -replace "start", "finish"
Copy-Item -Path $file.FullName -Destination $newLocation.ToString() -Force
}
コピー項目は、構造を維持しません。だから最初の部分は、私は30日の最終変更日ですべてのファイルを取得しています。それから、すべてのファイルをトラバースしてディレクトリ名を取り出し、それを新しいディレクトリの宛先に変更します(私の出発点はstartと呼ばれ、my destinationは必要な方法を変更します)。私は宛先が存在するかどうかを調べるためにテストします。そうでない場合、私は宛先を作成して、新しい宛先にファイルをコピーします。
あなたの特定の質問は何ですか? StackOverFlowは無料のコード作成サービスではありません。既存のコードをお手伝いします。 'ROBOCOPY'でこれを行うことができます。 – Squashman
私はSquashmanに同意します、 'ROBOCOPY'はこれをあなたのために行うべきです。 SOに関する良い質問をするには、[このリンク](https://stackoverflow.com/help/how-to-ask)を参照してください。 – cet51