Question
Suppression conditionnelle de fichiers (Résolu)
- pgu
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 15 ans 9 mois #1330
par pgu
Suppression conditionnelle de fichiers (Résolu) a été créé par pgu
Voilà que je me remet avec bonheur au PowerShell mais avec un légère perte de mémoire.
Alors si vous pouviez m'aider...
je voudrai donc faire une suppression de fichier conditionnel: exemple (et ne se moque pas de moi)
supprimer le fichier d'extention .TXT, si il n'existe pas le même fichier mais evec l'extention .TIF.
Merci
Message édité par: Arnaud, à: 7/12/07 17:43<br><br>Message édité par: Arnaud, à: 7/12/07 17:43
Alors si vous pouviez m'aider...
je voudrai donc faire une suppression de fichier conditionnel: exemple (et ne se moque pas de moi)
supprimer le fichier d'extention .TXT, si il n'existe pas le même fichier mais evec l'extention .TIF.
Merci
Message édité par: Arnaud, à: 7/12/07 17:43<br><br>Message édité par: Arnaud, à: 7/12/07 17:43
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 9 mois #1331
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Suppression de fichier conditionné
Y'a pas de raison de se moquer!
D'abord, aucune question n'est idiote à priori. Parfois certaines questions sont un peu paresseuses, mais en l'occurrence celle-ci n'appelle pas forcément une réponse absolument évidente, à moins que j'aie loupé quelque chose!
Je te propose une solution qui repose sur une expression régulière pour vérifier si le même nom de fichier TXT est utilisé avec une extension TIF:
[code:1]
dir *.txt | where {!(test-path ($_.name -replace \"(.*)\.txt\",'$1.tif'))} | foreach {remove-item $_}[/code:1]
L'expression régulière \"(.*)\.txt\" isole les caractères qui précèdent \".txt\" dans le nom de fichier. La chaîne isolée est reprise par l'opérateur -replace grâce à la variable automatique $1, suivie de \".tif\" pour reconstituer le nom de fichier dont on veut vérifier la présence.
La commandelette test-path sert justement à vérifier la présence du fichier TIF. Le point d'exclamation avant test-path sert à signaler qu'on veut filtrer les fichiers pour lesquels le résultat de test-path est négatif.
Janel
D'abord, aucune question n'est idiote à priori. Parfois certaines questions sont un peu paresseuses, mais en l'occurrence celle-ci n'appelle pas forcément une réponse absolument évidente, à moins que j'aie loupé quelque chose!
Je te propose une solution qui repose sur une expression régulière pour vérifier si le même nom de fichier TXT est utilisé avec une extension TIF:
[code:1]
dir *.txt | where {!(test-path ($_.name -replace \"(.*)\.txt\",'$1.tif'))} | foreach {remove-item $_}[/code:1]
L'expression régulière \"(.*)\.txt\" isole les caractères qui précèdent \".txt\" dans le nom de fichier. La chaîne isolée est reprise par l'opérateur -replace grâce à la variable automatique $1, suivie de \".tif\" pour reconstituer le nom de fichier dont on veut vérifier la présence.
La commandelette test-path sert justement à vérifier la présence du fichier TIF. Le point d'exclamation avant test-path sert à signaler qu'on veut filtrer les fichiers pour lesquels le résultat de test-path est négatif.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 9 mois #1332
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Suppression de fichier conditionné
Petite précision: la v2 de PowerShell inclut une propriété nouvelle pour les fichiers, intitulée BaseName. Cette propriété sert justement à récupérer le nom d'un fichier sans son extension, et permettrait donc d'éviter d'avoir recours à l'expression régulière dont je me suis servi dans mon exemple:
[code:1]
dir *.txt | where {!(test-path \"$($_.basename).tif\"«»)} | foreach {remove-item $_}[/code:1]
Une bonne raison supplémentaire d'installer la CTP de PowerShell v2!
Janel
[code:1]
dir *.txt | where {!(test-path \"$($_.basename).tif\"«»)} | foreach {remove-item $_}[/code:1]
Une bonne raison supplémentaire d'installer la CTP de PowerShell v2!

Janel
Connexion ou Créer un compte pour participer à la conversation.
- pgu
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 15 ans 9 mois #1341
par pgu
Réponse de pgu sur le sujet Re:Suppression de fichier conditionné
Pour la version V1 c'est OK, merci bien 
Mais pour la version V2, je ne peux utilisé de version non finale (raison professionnelle) , il faudra donc que je patiente quelques temps.

Mais pour la version V2, je ne peux utilisé de version non finale (raison professionnelle) , il faudra donc que je patiente quelques temps.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Suppression conditionnelle de fichiers (Résolu)