PowerShell, Spostare o copiare i files mantenendo la struttura delle directory

Chocolatey
Windows, Command Line Package Manager
30 marzo 2016
Windows Device
Windows, Custom ISO
4 aprile 2016
Mostra tutto

PowerShell, Spostare o copiare i files mantenendo la struttura delle directory

powershell old files
Capita spesso di trovarsi a riorganizzare vecchi files, in questo post vi mostrerò come spostare (o copiare) grandi quantità di files (la cui data è precedente a quella scelta), preservando la struttura delle cartelle.
# AUTHOR: Dennis Anfossi ([email protected])
# INFO: move files if they are older than the date indicated preserving folders structure.
# VERSION: 2.0

Write-Host ""
Write-Host "Nota: I path devono terminare con backslash '\'"
Write-Host ""

# Var.
$sourceDir = Read-Host 'Path sorgente'
$targetDir = Read-Host 'Path di destinazione'


Write-Host ""
$date = Read-Host 'Inserire la data di archiviazione "gg/mm/aaaa"'
Write-Host ""
# Cons.
$datesStr = '{0:ddMMyyyy}' -f $date
# Decl.
$tree = gci -Directory -Name -Recurse $sourceDir

# Check if $sourceDir exist
if(!(Test-Path -Path $sourceDir )){
	"Il path sorgente non è valido!" ; pause
	exit 1
}

# Check (and create) $targetDir
if(!(Test-Path -Path $targetDir )){
	mkdir $targetDir -Force
}

# Rebuild Tree
foreach ( $folders in $tree ) { mkdir $targetDir\$folders -Force }

# Check the age of files and move them if they are older than the date indicated.
Get-ChildItem -File $sourceDir -recurse |
foreach{
    if ($_.LastWriteTime -le $datesStr) {
    $targetFile = $targetDir + $_.FullName.SubString($sourceDir.Length); 
    Write-Host "Sposto il file:" $_.Name "la cui data è:" $_.LastWriteTime
	Move-Item $_.FullName -destination $targetFile
    }
}
Il funzionamento è molto semplice:
* All'esecuzione dello script verranno richiesti:
** I path "Sorgente" e "Destinazione" (es. "C:\Source\" e "C:\Destination\")
** La data di archiviazione (es. "01/01/2015")

Note:
* Per evitare l'output in console è sufficiente commentare la riga #41
* Per copiare i files invece che spostarli, modificare la riga #42 sostituendo "Move-Item" con "Copy-Item"

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *