Albiz849
29-11-2013, 08:56
Ciao!
Ho creato il seguente script per spostare cartelle vuote
$Move=@()
$Et1="0"
$Et2="9"
$Today = Get-Date -Format "dd-MMM"
$Folder= "C:\Estinto\$Today\EmptyFolders"
$Search= "C:\Test"
if(!(Test-Path $Folder)){
New-Item -Path $Folder -ItemType directory
}
Get-ChildItem $Search -Recurse |
Where-Object {(Get-ChildItem -Path $_.FullName) -eq $null -and $_.PSISContainer} |
foreach($_){
$Sav=Split-Path($_) -leaf
if($Sav.StartsWith($Et1) -or $Sav.StartsWith($Et2)){}
else{
$Mem=$_
$Move=$Move+$Mem.fullname
$Divide=$Mem.Parent.fullname -split('')
$Impera=""
foreach($count in $divide){
if($count -match ':'){
$count="$"
}
$Impera += $count
}
$Dest=$Folder,$impera -join('\')
if(!(Test-Path $Dest)){
New-Item -Path $Dest -ItemType directory
}
Move-Item -Path $Mem.FullName -Destination $Dest -force
}
}
Proprietà delle cartelle, al momento, è che non devono cominciare con 0 e 9... se volessi aumentare il numero di eccezioni e scrivere tutte le eccezioni in un array come posso procedere?
Se facessi un foreach($i in $etc){if($Sav.StartsWith($i))........}non avrebbe senso poiché cambierebbe completamente la logica del programma...
Magari un while(...){if($Sav.StartsWith(...))....} potrebbe rendere meglio l'idea...
Al momento aggiungo un paio di eccezioni in maniere bruta(if(A -or B -or C -or D){}) ma spero di poter giungere a una scrittura migliore... :-)
Grazie
A
Ho creato il seguente script per spostare cartelle vuote
$Move=@()
$Et1="0"
$Et2="9"
$Today = Get-Date -Format "dd-MMM"
$Folder= "C:\Estinto\$Today\EmptyFolders"
$Search= "C:\Test"
if(!(Test-Path $Folder)){
New-Item -Path $Folder -ItemType directory
}
Get-ChildItem $Search -Recurse |
Where-Object {(Get-ChildItem -Path $_.FullName) -eq $null -and $_.PSISContainer} |
foreach($_){
$Sav=Split-Path($_) -leaf
if($Sav.StartsWith($Et1) -or $Sav.StartsWith($Et2)){}
else{
$Mem=$_
$Move=$Move+$Mem.fullname
$Divide=$Mem.Parent.fullname -split('')
$Impera=""
foreach($count in $divide){
if($count -match ':'){
$count="$"
}
$Impera += $count
}
$Dest=$Folder,$impera -join('\')
if(!(Test-Path $Dest)){
New-Item -Path $Dest -ItemType directory
}
Move-Item -Path $Mem.FullName -Destination $Dest -force
}
}
Proprietà delle cartelle, al momento, è che non devono cominciare con 0 e 9... se volessi aumentare il numero di eccezioni e scrivere tutte le eccezioni in un array come posso procedere?
Se facessi un foreach($i in $etc){if($Sav.StartsWith($i))........}non avrebbe senso poiché cambierebbe completamente la logica del programma...
Magari un while(...){if($Sav.StartsWith(...))....} potrebbe rendere meglio l'idea...
Al momento aggiungo un paio di eccezioni in maniere bruta(if(A -or B -or C -or D){}) ma spero di poter giungere a una scrittura migliore... :-)
Grazie
A