Question
Suppression à partir d'une date précise
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 22
- Remerciements reçus 0
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.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
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 !!
merci qui ? merci Laurent
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 22
- Remerciements reçus 0
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Bylliboy écrit:
C'est déjà mieux que pas de réponseBon ben voilà comme d'hab, la réponse que je redoutais.
Bylliboy écrit:
Se débrouiller fait partie de l'apprentissage.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!
>>démerde toi!
ça c'est ton ressenti, tu peux aussi poser des questions. L'as-tu fait précédement ?
Bylliboy écrit:
Un exemple ?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.
En passant, un tutoriel n'est pas un cours.
Bylliboy écrit:
La démarche est identique, mais le filtre change. Powershell propose des pattern de commandes.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:
Bylliboy écrit:
Tu peux peut être le dire autrement, ceux qui répondent rendent service et ne sont pas 'au service de'.C'est pas ce que je veux!
Bylliboy écrit:
Un conseil : souffle et respireCa 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.
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.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
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.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 22
- Remerciements reçus 0
Je te rassure, j'ai l'air enervé mais je \"respire\"
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.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Suppression à partir d'une date précise