Question

Le script suivant supprimera les fichiers d'un répertoire nommé datant de plus de 14 jours et les écrira dans un .txt avec le chemin d'accès et les fichiers supprimés (trouvé ce script sur un autre forum..créditer sur shay):

dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif

J'ai 3 questions:

  1. Qu'est-ce que -lt et qu'est-ce que -le et qu'est-ce que -gt? Quand devrais-je utiliser chacun
  2. Le script ci-dessus supprime uniquement le fichier ... comment puis-je également supprimer des dossiers?
  3. Le script ci-dessus est basé sur LastWriteTime .. Qu'en est-il de CreatedDate ou LastAccessed l'heure?
Était-ce utile?

La solution

Ok, on y va:

  1. -lt, -le et -gt sont des opérateurs de comparaison. ll signifie moins que, le signifie plus petit ou égal à et gt plus grand que.

  2. La suppression de dossiers peut devenir dangereuse si vous n’avez pas le contrôle sur ce qui y pénètre. Vous pourriez avoir des problèmes et s'il vous plaît être conscient de la perte de données. Vous pouvez supprimer des dossiers en utilisant la même applet de commande Remove-Item, simplement en jouant avec ses options. Consultez cet article, il contient d'excellentes instructions pour y parvenir: , 00.html

  3. Habituellement, LastWriteTime et CreatedDate et LastAccessTime sont identiques pour les fichiers qui y sont depuis longtemps. Dans un fichier en lecture seule, tel qu'une DLL, LastAccessTime peut être plus récent que les deux autres. Dans un fichier en lecture / écriture (comme le fichier pst de outlook), WriteTime et AccessTime peuvent être identiques. En gros, c’est totalement à vous. Ils fonctionnent de la même manière que LastWriteTime. Examinez la nature des fichiers que vous souhaitez supprimer et continuez!

Autres conseils

Les -lt -le et -gt sont des opérateurs de comparaison au lieu de < ;, < =., > ;. Tapez & Quot; aide about_Comparison_Operators & Quot; à l'invite de commande powershell pour obtenir des détails sur chaque type et la raison de les utiliser à la place de ceux que vous connaissez bien dans d'autres langues.

Pour supprimer également des dossiers, vous devez supprimer la partie ! $. PsIsContainer AND du filtre Where. Cela supprime tous les éléments des listes qui sont des répertoires.

Je ne suis pas sûr de ce que vous voulez avec la question & "Qu'en est-il de CreatedDate ou de la dernière heure d'accès &"; mais vous pouvez simplement utiliser ces propriétés de la même manière que LastWriteTime, mais vous devez choisir la logique que vous essayez de réaliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top