Question Suppression à partir d'une date précise

Plus d'informations
il y a 10 ans 2 mois #21339 par Fabien
Bonjour,
Voila je souhaite supprimer tous les dossiers se trouvant dans un certain dossier $DataFolder mais dont la dernière date de modification est inférieure à une date précise.
voila mon script:

[code:1]$DataFolder= \"MonChemin\"

Get-Childitem $DataFolder -recurse | ?{($_.LastWriteTime -lt (get-Date).Date(01/11/2015))} | remove-item[/code:1]

J'ai aussi essayé:

[code:1]$DataFolder= \"MonChemin\"

Get-Childitem $DataFolder -recurse | ?{($_.LastWriteTime -lt (get-Date -Format dd/m/yyyy).Date(01/11/2015))} | remove-item[/code:1]

Get-Childitem $DataFolder -recurse | ?{($_.LastWriteTime -lt (get-Date -Format dd/mm/yyyy).Date(01/11/2015))} | remove-item

Aucun ne fonctionne.

Quelqu'un peut il m'aider? merci

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

Plus d'informations
il y a 10 ans 2 mois #21340 par Philippe
salut Bylliboy

Laurent Dardenne a fait un joli tuto sur powershell qui s'appuie sur un exemple correspondant presque à tes besoins !!
mais à la fin du tuto tu sera comment adapté l'exemple à tes bessoins !! B)

merci qui ? merci Laurent

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

Plus d'informations
il y a 10 ans 2 mois #21341 par Fabien
Bon ben voilà comme d'hab, la réponse que je redoutais.
Comme à chaque fois sur ce forum, quand je pose une question on me répond par: bah regarde sur ce tuto et démerde toi!
Et comme souvent j'arrive sur un tuto que j'ai déjà regardé et qui ne me convient pas et en plus où on explique presque rien.

Alors je reprends, je cherche un script qui me permet de dire: Je veux supprimer tous les dossiers et fichiers se trouvant dans un \"chemin\" mais dont la date de dernière modification est inférieur à telle date!

et PAS un script qui me permette de supprimer des fichiers vieux de tant de jours du genre:

[code:1]Get-Childitem $DataFolder -recurse | ?{!$_.PSIsContainer -and ($_.CreationTime -lt (get-Date).adddays(-60))} | remove-item[/code:1]

C'est pas ce que je veux!


Je sais, vous allez me dire: on est pas là pour te donner la réponse toute cuite.
Ca fait 2 jours que je cherche ce petit script, si vous voulez pas me donner la réponse, essayer de m'expliquer au moins ce qui va pas dans mon script.

Merci. :(

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

Plus d'informations
il y a 10 ans 2 mois #21342 par Laurent Dardenne
Salut,
Bylliboy écrit:

Bon ben voilà comme d'hab, la réponse que je redoutais.

C'est déjà mieux que pas de réponse ;-)
Bylliboy écrit:

Comme à chaque fois sur ce forum, quand je pose une question on me répond par: bah regarde sur ce tuto et démerde toi!

Se débrouiller fait partie de l'apprentissage.
>>démerde toi!
ça c'est ton ressenti, tu peux aussi poser des questions. L'as-tu fait précédement ?
Bylliboy écrit:

Et comme souvent j'arrive sur un tuto que j'ai déjà regardé et qui ne me convient pas et en plus où on explique presque rien.

Un exemple ?
En passant, un tutoriel n'est pas un cours.
Bylliboy écrit:

Je veux supprimer tous les dossiers et fichiers se trouvant dans un \"chemin\" mais dont la date de dernière modification est inférieur à telle date!
PAS un script qui me permette de supprimer des fichiers vieux de tant de jours du genre:

La démarche est identique, mais le filtre change. Powershell propose des pattern de commandes.
Bylliboy écrit:

C'est pas ce que je veux!

Tu peux peut être le dire autrement, ceux qui répondent rendent service et ne sont pas 'au service de'.
Bylliboy écrit:

Ca fait 2 jours que je cherche ce petit script, si vous voulez pas me donner la réponse, essayer de m'expliquer au moins ce qui va pas dans mon script.

Un conseil : souffle et respire :-)

Pour ton code ceci ne fonctionne pas :
[code:1]
(get-Date).Date(01/11/2015)
#Échec lors de l'appel de la méthode, car [System.DateTime] ne contient pas de méthode nommée « Date ».
[/code:1]
Le message d'erreur devrait te mettre sur la voie.
La seconde ligne ne fonctionne pas :
[code:1]
(get-Date -Format dd/m/yyyy).Date
#RAS
[/code:1]
Ici tu construis une chaine, puis tu demandes une propriété 'Date' qui n'existe pas:
[code:1]
(get-Date -Format dd/m/yyyy).GetType()
#String
[/code:1]
C'est indiqué dans la doc du cmdlet Get-Date:

-Format <String>
Affiche la date et l'heure dans le format Microsoft .NET Framework indiqué par le spécificateur de format. Entrez
un spécificateur de format. Pour obtenir la liste des spécificateurs de format disponibles, consultez la «Classe
DateTimeFormatInfo» dans MSDN (Microsoft Developer Network) Library à l'adresse
go.microsoft.com/fwlink/?LinkId=143638.

Quand vous utilisez le paramètre Format, Windows PowerShell obtient uniquement les propriétés de l'objet DateTime
dont il a besoin pour afficher la date dans le format que vous spécifiez. Ainsi, certaines propriétés et méthodes
des objets DateTime ne sont peut-être pas disponibles.

...

SORTIES
System.DateTime or System.String

:-)
Pour créer une date :
[code:1]
'01/11/2015' -as [Datetime]
[/code:1]
Un test :
[code:1]
$D=$D1=$D2='01/11/2015' -as [Datetime]
$D1=$D1.AddDays(1)
$D2=$D2.AddDays(-1)

$D -lt $D1
#True
$D -lt $D2
#False
[/code:1]
D'où :
[code:1]
$SearchDate='01/11/2015' -as [Datetime]
$DataFolder='C:\temp\Test'
Get-Childitem $DataFolder -recurse |
#La date de dernière modification est inférieur à $SearchDate
#Supprime la partie heure ou heure = 0:0:0 pour les deux opérandes
Where {$_.LastWriteTime.Date -lt $SearchDate} |
Remove-Item -Verbose -Whatif
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 2 mois #21346 par Philippe
salut Laurent

merci d'avoir pris le temps de répondre à toutes ces \"remarques\" !

j'ai relu le tuto au cas ou je me serai trompé et il y a bien toutes les infos pour arrivé a faire sois même le script !

@laurent je crois que l'on est sur la semaine \"supermarché\"

@Bylliboy je pensé que tu aurai aimé apprendre à te démerdé seul ! la prochaine fois essai une demande du genre \"malgré les tutos je comprend comment faire\" !

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

Plus d'informations
il y a 10 ans 2 mois #21347 par Fabien
Ah ben voila quand on pousse une petite gueulante...
Je te rassure, j'ai l'air enervé mais je \"respire\" :), c'est juste qu'à chaque fois que je posais une réponse ici on me renvoit sur ton tuto, qui est bien mais n'explique pas toutes les possibilités en détaille (c'est pas un reproche) (comme tous les tutos d'ailleurs), et en plus bien sur avant de venir sur ce forum j'ai cherché partout sur Google dont ton tuto.

Mais je rappelle que je suis un débutant (puisqu'on est sur le forum partie réservée au débutant) et que je ne comprends pas tout, même parfois les tutos.
Donc comprends bien que quand je pause une question ici et que pour la énième fois on me renvois sur ton tuto sans explication, cela \"m'agace\" un tout petit peu, et je suis sur que je ne suis pas le seul à ressentir cela.

Bref, j'en reviends à mon script,
Je savais qu'il comparait une date du type \"mercredi 20 janvier 2016\" à une date du type \"01/10/2015\" et que cela posait problème malgré ma tentative avec \"-Format\"
Je te remercie donc pour ton explication et comprends donc qu'il fallait que je créais ma date en tant que \"DateTime\".

Maintenant, peux tu m'expliquer à quoi sert le \"-Verbose -Whatif\" à la fin du script?

Merci pour ton indulgence.

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

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