|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2013
Messaggi: 26
|
[POWERSHELL] Problema annidamento
Ciao!
Ho creato il seguente script per spostare cartelle vuote Codice:
$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
}
}
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 |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Oct 2013
Messaggi: 26
|
Tentando di darmi delle risposte per quanto scritto sopra mi sono imbattuto in questo get-help about_break
Codice:
$var = "parola2"
switch -regex ($var)
{
"parola2"
{
Write-Host "Esatto" $_
break
}
"parola.*"
{
Write-Host "Corrispondenza con prefisso" $_
break
}
"p.*"
{
Write-Host "Corrispondenza almeno con la prima
lettera" $_ break
}
default
{
Write-Host "Nessuna corrispondenza" $_
break
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:39.



















