13

Ho sviluppato uno script PowerShell e funziona perfettamente. L'unica sfida è che i file nelle sottocartelle non vengono spostati nella destinazione.Script PowerShell per spostare file e cartelle comprese le sottocartelle da una posizione a un'altra più vecchia di x giorni

get-childitem -Path "\\servername\location" | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "C:\Dumps" 

Non riesco a personalizzare ulteriormente lo script.

risposta

10

Utilizzare l'opzione -Recurse sul comando Get-ChildItem per mettersi in contatto con i file nelle sottocartelle e quindi spostare ciascuna singolarmente reindirizzando la raccolta di Move-Item

Get-ChildItem -Path "C:\Test" -Recurse | 
    Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(-31)} | 
    Move-Item -destination "C:\Dumps" 

Ecco uno screenshot:

screenshot

+0

Musaab. Il -Recursive non sembra funzionare. Potete aiutare ulteriormente? – user1926332

+0

Sei sicuro che i file soddisfano la clausola where-object? Aggiornerò la mia risposta con uno screenshot per illustrare come sto usando l'opzione -Recursive. Controlla e fammi sapere cosa sto facendo in modo diverso. –

+0

Hey molte grazie Musaab .... In realtà stavo smarrendo un personaggio. – user1926332

12

Non perdere tempo a cercare di reinventare lo robocopy in PowerShell.

robocopy \\servername\location C:\Dumps /e /mov /minage:31 
+0

Questo script sta copiando i file nella destinazione e solo dal principale sentiero. Vorrei includere anche le sottocartelle. Voglio spostarli in un'altra posizione. – user1926332

+1

Usa '/ s' per ricorrere in sottocartelle. Usa '/ e' (invece di'/s') per includere anche sottocartelle vuote. Cosa intendi per "un'altra posizione"? Non vuoi conservare la struttura delle cartelle? In tal caso, è possibile utilizzare PowerShell (con l'opzione '-Recursive', come menzionato da @Musaab). Tuttavia, questo approccio rischierà di perdere dati a causa di file sovrascritti. –

+0

Grazie Ansgar .... la tua sceneggiatura in robocopy ha fatto il lavoro che volevo e in più sono riuscito a creare un altro script per un altro utilizzo. – user1926332

6

semplificazione di quanto sopra
robocopy A:\ B:\ /MIR /minage:31
Dove A: \ è la vostra fonte B: \ è la vostra destinazione

0

avevo bisogno di un rapido uno di linea per spostare tutti i dati fuori un disco su un altro. Questo ha funzionato perfettamente per me:

Get-ChildItem "E:" -Recurse | Move-Item -Destination "G:"