2016-11-15 8 views
0

x日より古いファイルを削除することが目標です。コピーを使用してテストします。 これを行う方法に関する記事がいくつか見つかりましたが、私が経験している問題は変数に使用されるプロパティと比較しても、すべてのファイルが移動(コピー)されていることです。次に、結果をログファイルにパイプしてファイルを作成しますが、書き込みは行いません。私は何かが見当たりませんが、それを見ることはできません。私が間違っていることについてのどんな入力も感謝しています!Powershellでx日より古いファイルを削除する

$SDirectory = "C:\TestOne*" 
$Destpath = "C:\TestTwo" 
$limit = (Get-Date).Date.AddDays(-2) 
$Full = Get-childitem -path $SDirectory -Recurse -Include *.bak,*.trn 

foreach ($i in $Full) 
{ 
    ##if ($i.CreationTime -gt ($(Get-Date).adddays(-2))) 
    if ($i.LastWriteTimeUtc -gt $limit) 
    { 
     Copy-Item -Path $Full -Destination $Destpath -Force | Out-File C:\Admin\Results11.txt -Append 
    } 
} 
+0

あなたはコピーで代わりに$ i.Fullnameの$完全なを使用している、とあなたはコピーからどんな結果を期待できますか? – LotPings

+0

コピーはもちろん、今まで私はすべてをコピーするように指示していました。 – GlennUrquhart

+0

しかし、それを行うのとは別に、ジョブコピーには、-passthruオプションを省略し、dirのような醜いものをどこにでも付け加えることができる出力はありません。 – LotPings

答えて

1

あなたが実際にそれらをコピーするので、すべてのファイルがコピーされている理由は次のとおりです。

Copy-Item -Path $Full ... 

私はあなたがより多くのこのような何かしたいと思う:出力の使用をキャプチャするには

Copy-Item -Path $($i.FullName) ... 

-PassThru

Copy-Item -Path $($i.FullName) -Destination $Destpath -PassThru -Force | Out-File C:\Admin\Results11.txt -Append 
+0

ファイルをコピーしようとしている場合、-gtではなく-ltを必ず使用します。 x日よりも古いx日より新しいです –

+0

ありがとうございます!今私は、for-eachがそれを処理すると仮定して、私が間違っていたことを見ています。 – GlennUrquhart

+0

私は知っていません - パススルーは本当に素人な、 – Esperento57

0

は、これは私が思い付いたものです:

$SDirectory = "C:\TestOne*" 
$Destpath = "C:\TestTwo" 
$limit = (Get-Date).Date.AddDays(-2) 
$files = Get-ChildItem -Path "$SDirectory" | % { 
    if ($_.CreationTime -gt $limit) { 
    Copy-Item -Path $_.FullName "$Destpath" 
    Add-Content "C:\Admin\Results11.txt" -Value $_.Name 
    } 
} 
+0

ええ、Mike Garuccioが言ったように、必要な結果に応じて-ltか-gtのどちらかを使うことができます。 –

関連する問題