2013-08-26 4 views
1

je suis un débutant sur les scripts PowerShell donc garder au frais ^^un répertoire à exclure Effectuer

Je voudrais supprimer le fichier sur le répertoire d: \ test supprimer fichier seulement plus de 15 jours, mais I'don » Je veux supprimer les fichiers d'un autre répertoire dans le répertoire d: \ test.

Mon script

#----- define parameters -----# 
#----- get current date ----# 
$Now = Get-Date 
#----- define amount of days ----# 
$Days = "15" 
#----- define folder where files are located ----# 
$TargetFolder = "d:\test" 
#----- define extension ----# 
$Extension = "*.bak" 
#----- define LastWriteTime parameter based on $Days ---# 
$LastWrite = $Now.AddDays(-$Days) 
#----- get files based on lastwrite filter and specified folder ---# 
$Nomatch = "d:\test\ZZ - Archives","d:\test\ZZ - Cloture Paye" 

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"} | 
Where-Object {$_.FullName -notmatch "$Nomatch"} 

foreach ($File in $Files) 
     { 
     if ($File -ne $NULL) 
      { 
      write-host "Deleting File $File" -ForegroundColor "DarkRed" 
      Remove-Item $File.FullName | out-null 
      } 
     else 
      { 
      Write-Host "No more files to delete!" -foregroundcolor "Green" 
      } 
     } 

Répondre

1

Il y a une propriété sur chaque fichier

PSIsContainer 

Il indique si votre objet est un répertoire et vous pouvez filtrer votre collection de fichiers:

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | 
where { !$_.PSIsContainer } | ... 
+0

Je peux exclure le répertoire avec psiscontainer? avec quelle ligne de code? – Stranger

+0

Ok je trouve une solution à propos de mon cas ^^ – Stranger

3

Si vous êtes sur Powershell 2.0, pour obtenir uniquement les fichiers:

Get-ChildItem $TargetFolder | Where-Object { ! $_.PSIsContainer } 

Si vous êtes sur Powershell 3.0, faites:

Get-ChildItem $TargetFolder -File 

Je ne sais pas si vous voulez -Recurse. Si vous ne voulez que les fichiers au d:\test et pas les fichiers sous les répertoires enfants aussi, n'utilisez pas -Recurse.

+0

Désolé mais ce n'est pas ma question Je veux juste exclure Je sais que je peux utiliser PSIcontainer mais il est possible d'avoir une ligne de code pour ça? – Stranger

+0

@Stranger - Désolé, je ne comprends pas votre commentaire. Avoir une ligne de code pour quoi? – manojlds

+0

à propos de cela pour exclure mon répertoire spécifique voir ci-dessous $ Files = Get-Childitem $ TargetFolder -Inclure $ Extension -Recurse | où {! $ _. PSIsContainer} | ... – Stranger

Questions connexes