IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Suppression fichier si taille [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Climatologie
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Climatologie

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut Suppression fichier si taille
    Bonjour à tous.

    Cette question va sans doute vous paraître simple, mais moi hélas je n'y entends rien. Pour mes travaux personnels (recherche météorologique perso) j'ai besoin de quelques automatisations sur mon PC, et pour ce faire j'ai choisi d'employer Powershell (ça m'a l'air plus puissant qu'en Batch, mais je ne suis pas bien avisé). Je démarre pratiquement sans base, donc je glane des informations sur le net, aussi j'espère que vous serez indulgents.

    Pour faire court, j'ai un petit script PS qui me télécharge chaque heure des images météorologiques satellites, et me les enregistre sur mon PC dans un dossier transitoire. Certaines de ces images sont des fichiers vides, car certaines de ces images ne sont pas encore publiées au moment du téléchargement. Mon objectif est de créer un script PS qui me supprime les images vides (avant de créer un script qui me les triera, mais ce sera pour plus tard...). J'ai pensé au poids du fichier : les images "normales" pèsent au minimum 150 KB, les images vident pèsent moins de 5 KB.

    Ça m'avait l'air tellement simple, en farfouillant sur le net, et pourtant :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dossier = "E:\telechargements-automatiques\dossier-transitoire_sat24"
    $tailleMin = 5
    Get-ChildItem -Path $dossier -Recurse | ForEach-Object{
        if ($_.Length / 5KB -lt $tailleMin)
        {Remove-Item $_ -Force} else {}}

    ne fonctionne pas (même sur un dossier test ne contenant que 2 images : l'une "normale", l'autre vide.)

    J'obtiens un message d'erreur étonnant (pour le néophyte que je suis) :

    Remove-Item : Impossible de trouver le chemin d'accès « E:\telechargements-automatiques\satellite-ir-europe-sat24_202008300650.jpeg », car il n'existe pas.
    Au caractère E:\telechargements-automatiques\telechargements-automatiques_060min_sat24_traitement.ps1:5 : 6
    + {Remove-Item $_ -Force} else {}}
    + ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (E:\telechargeme...2008300650.jpeg:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
    Ce qui m'étonne, c'est que je remarque dans le message d'erreur que le chemin d'accès est faux, ce n'est pas :

    E:\telechargements-automatiques\satellite-ir-europe-sat24_202008300650.jpeg
    qu'il faut supprimer,
    mais :

    E:\telechargements-automatiques\dossier-transitoire_sat24\satellite-ir-europe-sat24_202008300650.jpeg

    Pourtant le chemin d'accès est juste dans ma définition de $dossier. Et de même l'image satellite satellite-ir-europe-sat24_202008300650.jpeg est bien celle qui est "vide" (pas de message d'erreur pour la deuxième image, laquelle est normale et ne doit donc pas être supprimée). La "mécanique" du script en elle-même fonctionne.

    Si par contre, juste pour essayer, je supprime de mon script précédent le code censé traiter mes fichiers, c'est-à-dire que j'écris ceci :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $dossier = "E:\telechargements-automatiques\dossier-transitoire_sat24"
    $tailleMin = 5
    Get-ChildItem -Path $dossier -Recurse


    Et bien cela fonctionne et j'obtiens la liste de toutes mes images, avec leur date de création, leur taille, etc.

    Quelqu'un comprend ? Où se situe mon erreur ?

    PS : je me doute bien qu'il doit exister un moyen de demander à mon script de ne télécharger que les images dont la taille est supérieure ou égale à une certaine valeur, mais je ne sais pas faire non plus, et je n'ai pas trouvé sur le net. Mais j'aimerai quand même bien comprendre pourquoi mon script ne fonctionne pas, l'apprentissage passant par les erreurs (enfin je crois).
    PS2 : comment faites-vous pour apprendre le langage PS ? Je dois être une andouille, car je ne trouve pas sur le net de "cours" destinés aux débutants, je tombe à chaque fois sur des enseignements qui nécessitent de nombreuses bases que je n'ai pas. J'en suis d'autant plus étonné qu'à l'époque où j'ai appris le langage html, css, et un peu php, je trouvais d'intarissables ressources. En PS2, soit je trouve des cours qui m'apprennent à écrire : Bonjour je m'appelle John, soit des cours où je suis complètement dépassé par le niveau requis.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Test comme ceci
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dossier = "E:\telechargements-automatiques\dossier-transitoire_sat24"
    $tailleMin = 5
    Get-ChildItem -Path $dossier -Recurse -File | ForEach-Object{
        if ($_.Length / 5KB -lt $tailleMin)
        {Remove-Item $_.FullName -Force}}

  3. #3
    Membre régulier
    Homme Profil pro
    Climatologie
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Climatologie

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut
    Bonjour,

    Votre solution fonctionne à la perfection. Merci beaucoup d'avoir pris le temps de m'aider.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression fichier gros taille
    Par pkp85pkp dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 24/02/2015, 12h47
  2. Suppression fichier si taille égale 0
    Par soron59 dans le forum VBScript
    Réponses: 1
    Dernier message: 13/07/2012, 11h04
  3. Réponses: 10
    Dernier message: 15/12/2009, 11h51
  4. [Perf] Optimiser la lecture d'un fichier de taille > 2 m
    Par sacofan dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 22/07/2005, 13h25
  5. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo