Question Exclure des dossiers

Plus d'informations
il y a 14 ans 10 mois #9845 par Leharivel
Exclure des dossiers a été créé par Leharivel
Bonjour,

Mon script me permet de supprimer des fichiers dans une arborescence avec des dossiers et sous-dossiers en fonction du nombre de jours inscrit

Le problème que je rencontre c'est que je dois supprimer des fichiers de plus de 365 jours et d'autres de 180 jours.

Comment je pourrais exclure des répertoires dans mon script

En langage français :

je veux supprimer tout les fichiers des dossiers qui sont inférieur à 180 jours sauf pour les dossiers et sous-dossier c:\\test\\toto et c:\\test\\tata

Mon script :
$jour = Get-Date
$lastmod = $jour.AddDays(-180)

$mydata = c:\test

Get-Childitem $mydata -recurse -force | Where {$_.LastWriteTime -le \"$lastmod\"} | Foreach {
If (($_.extension -eq \".txt\") -or ($_.extension -eq \".log\"))
}

Avez vous une idée ?<br><br>Message édité par: anth14, à: 29/06/11 22:02

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9849 par Leharivel
Réponse de Leharivel sur le sujet Re:Exclure des dossiers
Bonjour,

J'ai trouvé la fonction exclude à la commande Get-chilitem mais cela concerne seulement les fichiers

mais pas les dossiers quelqu'un a une idée ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9853 par xyz
Réponse de xyz sur le sujet Re:Exclure des dossiers
anth14 écrit:

quelqu'un a une idée ?

Un lien déjà .
Sinon tu peux coder un filtre (Filter) ayant comme paramètre un tableau de nom de répertoire :
[code:1]Get-Childitem $mydata -recurse -force |
Skip-Container @(\&quot;C:\X\Y\Z\&quot;,\&quot;D:\zz\aa\&quot;«»)|
etc[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9856 par Leharivel
Réponse de Leharivel sur le sujet Re:Exclure des dossiers
Bonjour,

Cela fonctionne avec :

Get-Childitem $mydata -recurse -force |where {$_.fullname -notmatch 'c:\\test\\1234'}

Le problème j'ai plusieurs dosssier à exclure, comment je peux faire avec la commande ci-dessus ou comment faire un filtre avec votre ligne de commande

Get-Childitem $mydata -recurse -force |

Skip-Container @(\&quot;C:\X\Y\Z\&quot;,\&quot;D:\zz\aa\&quot;)|

Merci de ta réponse

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9860 par xyz
Réponse de xyz sur le sujet Re:Exclure des dossiers
anth14 écrit:

comment je peux faire avec la commande ci-dessus ou comment faire un filtre avec votre ligne de commande

L'idée de départ était d'exclure des noms de chemin de tout provider PowerShell.
Une solution :
[code:1]
Filter Skip-Container{
Param ($Containers)
begin {
#Construit, avec le tableau de nom de chemin, une regex.

#Celle-ci est basée sur une alternative
$OFS='|'
#où on recherchera le nom de chemin débutant par C:\temp (^c:\temp)
$RegEx=\&quot;($($Containers|% {\&quot;^$([regex]::Escape($_))\&quot;}))\&quot;
#Pour @(\&quot;C:\Temp\&quot;,\&quot;C:\Windows\&quot;«») on aura la regex : (^C:\\Temp|^C:\\Windows)

#On pointe directement sur l'objet,
#au lieu de le faire à chaque itération
$SSP=$ExecutionContext.SessionState.Path
Write-Debug $RegEx
}
Process {
#Tous les objets issu d'un provider PowerShell dispose de la propriété PSPath
#Celle-ci contenant le nom du provider, on doit tansformer le chemin PowerShell
#en un chemin normé.
If (-not ($SSP.GetUnresolvedProviderPathFromPSPath($_.PSPath) -Match $RegEx))
{ $_ }
}
}
[/code:1]
Quelques tests :
[code:1]
cd C:
Get-Childitem c:\temp\test -recurse -force |
#Provider FileSystem, on précise le nom du drive
Skip-Container @(\&quot;C:\Temp\Test\Word8\&quot;,\&quot;C:\temp\Test\VWDWebCache\&quot;«»)

cd Wsman:
Get-Childitem WSMan:\localhost -recurse -force |
#Autre provider, on ne précise pas le nom du drive
Skip-Container @(\&quot;localhost\Client\&quot;,\&quot;localhost\Service\&quot;«»)

cd Feed:
Get-Childitem Feed:\ -recurse -force |
#Autre provider, on ne précise pas le nom du drive
Skip-Container @(\&quot;Dev\&quot;«»)

cd hklm:
Get-Childitem Hklm:\ -force |
#Autre provider, on ne précise pas le nom du drive
#Ici on précise le nom de la ruche portée par le drive,
#car il constitue une partie du path
Skip-Container @(\&quot;HKEY_LOCAL_MACHINE\SOFTWARE\&quot;«»)
[/code:1]
Ce n'est pas très performant, attention donc aux arborescences conséquentes.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9873 par Leharivel
Réponse de Leharivel sur le sujet Re:Exclure des dossiers
Merci de ton aide

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.043 secondes
Propulsé par Kunena