2017-11-01 12 views
-2

サーバーを使用してある場所から別の場所にファイルを移動する必要があります。 30日以上経過したファイルは移動されます。 例:ソースパス:C:/ sharedPath /デスティネーションパス:D:/ BackUpSharepath ここでの問題は、sharedPathフォルダにサブフォルダが「n」含まれていることです。 ファイルは、フォルダ構造を乱すことなく移動する必要があります。 移動されるファイルは、ソースと同じフォルダ構造にする必要があります。事前にスクリプト - Powershell、Batch、Robocopy

おかげ

+4

あなたの特定の質問は何ですか? StackOverFlowは無料のコード作成サービスではありません。既存のコードをお手伝いします。 'ROBOCOPY'でこれを行うことができます。 – Squashman

+0

私はSquashmanに同意します、 'ROBOCOPY'はこれをあなたのために行うべきです。 SOに関する良い質問をするには、[このリンク](https://stackoverflow.com/help/how-to-ask)を参照してください。 – cet51

答えて

0
$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は必要な方法を変更します)。私は宛先が存在するかどうかを調べるためにテストします。そうでない場合、私は宛先を作成して、新しい宛先にファイルをコピーします。

+0

私の元のフォルダ構造は、開始ディレクトリがC:\ Temp2 \ start、宛先がC:\ Temp2 \ finishでした – JMIII

関連する問題