2011-05-06 8 views
10
Function Move { 
    #Moves all files older than 31 days old from the Source folder to the Target 
    Get-Childitem -Path "E:\source" | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    ForEach { 
    Move-Item $_.FullName -destination "F:\target" -force -ErrorAction:SilentlyContinue 
    } 
} 

Kaynak dizinde 2-3 yıldan eski dosyalar var, ancak komut dosyasını çalıştırdığımda hiçbir şey hedef dizine taşınıyor?! Sorun nedir ?Dosyaları eskiden 31 gün sonra başka bir sürücüye taşıyın

+0

ErrorAction'ı çıkarırsanız herhangi bir hata üretir mi? –

+0

Dosyalarınız tam olarak veya alt dizinlerinde "E: \ source" konumunda mı? İkinci durumda, alt dizinlerdeki dosyaları taşımayan 'Get-Childitem -Recurse' –

+1

FYI kullanılır. – JasonMArcher

cevap

16

Bunun bir fark yaratıp yaratmadığını bilmiyorum, bunun yerine $. $ _ olması gerekiyor.

bu senaryoyu denedik ve bu benim için çalışıyor: nesneler

+0

get-currentitem Get-Childitem'i kastediyorsunuz? – JPBlanc

+0

neden benim için çalışmıyor ... çok garip. foreach hakkında problemleri önlemek için düşündüm, çünkü bazı yönetmenlerde 20k + dosyaları var ... –

+0

Bir fikrin var mı? –

4

Ayrıca hareket maddelik komutu içine "borulu" olacaktır, çünkü

get-childitem -Path "E:\source" | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "F:\target" 

Bildirim Bir foreach döngü gerekmez Gizli dosyalardan haberdar olmak için, Get-ChildItem

için -Force eklemeye çalışın