|
|
|
![]() |
|
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: 15:29.