Question Suppression conditionnelle de fichiers (Résolu)

Plus d'informations
il y a 13 ans 4 mois #1330 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

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

Plus d'informations
il y a 13 ans 4 mois #1331 par Jacques Barathon
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 \&quot;(.*)\.txt\&quot;,'$1.tif'))} | foreach {remove-item $_}[/code:1]
L'expression régulière \&quot;(.*)\.txt\&quot; isole les caractères qui précèdent \&quot;.txt\&quot; 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 \&quot;.tif\&quot; 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.

Plus d'informations
il y a 13 ans 4 mois #1332 par Jacques Barathon
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 \&quot;$($_.basename).tif\&quot;«»)} | 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.

Plus d'informations
il y a 13 ans 4 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.

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

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