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 :

Stocker les images de "Windows à la Une" [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut Stocker les images de "Windows à la Une"
    Salut à tous.

    J'ai cherché et je n'ai pas trouvé le lieu où il est consacré un forum à PowerShell. Désolé si je me suis trompé de forum.

    J'ai décidé de me mettre enfin à Power Shell.
    Pour ce premier programme, je désire stocker les images de "Windows à la Une".
    Je reçois une image, comme tout le monde, chaque jour et je la stocke.

    Au lieu de le faire manuellement jusqu'à présent, j'ai fait un programme PowerShell qui le fait à ma place.
    Le but est d'extraire uniquement les images dont la dimension est 1920x1080.
    Voici ce que j'ai fait :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $CHEMIN="C:\Users\Patron\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"
    $DIRPATH="C:\Users\Patron\OneDrive\Bureau\Windows_a_la_Une"
     
    Write-host "Extraction Images Windows à la Une"
    Write-host "=================================="
    Write-host ""
     
    if (Test-Path -Path $DIRPATH)
    {
    	Remove-Item -Path "$DirPath" -Include *.* -Recurse
    }
    else
    {
    	New-Item    -Path "$DIRPATH" -ItemType directory
    }
     
    $Liste = Get-Childitem "$CHEMIN"
     
    foreach ($Ligne in $Liste)
    {
    	Add-Type -AssemblyName System.Drawing
     
    	$Image = [System.Drawing.Image]::FromFile("$CHEMIN\$Ligne")
     
    	if (($Image.Width -eq 1920) -and ($Image.Height -eq 1080))
    	{
    		Copy-Item "$CHEMIN\$Ligne" "$DIRPATH"
    	}
    }
     
    Get-Childitem "$DIRPATH" | ForEach-Object {$_ | Rename-Item -NewName "$_.jpg"}
     
    Write-host ""
    pause
    exit
    Je n'ai pas trouvé le moyen de stocker mes images en les numérotant.
    Le nom est Img suivit d'un numéro commençant à 100.
    Comme il existe déjà des images portant ces numéros, je ne désire pas les écraser.
    Si quelqu'un peut me donner la solution, cela me serait très profitable.

    Manque-t-il des choses dans ce programme PowerShell ?
    N'y-a-t-il pas une entête comme dans l'invite de commande : "@echo off" ?

    Cordialement.
    Artemus24.
    @+

  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
    Sans trop dénaturer le code voici quelques propositions de modifications minimes, certaines sont surement des préférences personnelles.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $CHEMIN = "C:\Users\Patron\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"
    $DIRPATH = "C:\Users\Patron\OneDrive\Bureau\Windows_a_la_Une"
     
    Write-host "Extraction Images Windows à la Une"
    Write-host "=================================="
    Write-host ""
     
    if (Test-Path -Path $DIRPATH -PathType Container)
    {
    	Remove-Item -Path "${DIRPATH}\*.*" -Recurse -Force
    }
    else
    {
    	New-Item -Path $DIRPATH -ItemType directory
    }
     
    $Liste = ChildItem -Path $CHEMIN -File
     
    Add-Type -AssemblyName System.Drawing
     
    foreach ($Ligne in $Liste)
    {
    	$Image = [System.Drawing.Image]::FromFile($Ligne.FullName)
     
    	if ($Image.Width -eq 1920 -and $Image.Height -eq 1080)
    	{
    		Copy-Item -LiteralPath $Ligne.FullName -Destination "${DIRPATH}\$($Ligne.BaseName).jpg"
    	}
    }
     
    Write-host "`nAppuyer sur Entrée pour terminer"
    $null = Read-Host
    Exit

    En voyant ton code je ne vois pas comment il pourrait y avoir un doublon de nom de fichier puisque tu purge le dossier cible et que la source se cantonne à un seul dossier.
    Sinon je te conseillerait d'ajouter la date dans le nom des fichiers (car joué 1 fois par jours).

    Nous pouvons discuter des modifications si besoin

    PS : Script non testé, utiliser -WhatIf si besoin

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut ericlm128.

    Merci pour ton intervention.
    Tes modifications sont bien ce que je recherchais, une normalisation.

    Peux-tu me donner l'instruction pour supprimer un répertoire avec son contenu ?
    J'ai essayé par un remove-item mais il me provoque une erreur.
    Soit c'est "un point de jonction NTFS" ou encore, "l'accès au fichier cloud est refusé".
    Je n'ai pas bien compris ces erreurs.

    Citation Envoyé par ericlm128
    En voyant ton code je ne vois pas comment il pourrait y avoir un doublon de nom de fichier puisque tu purge le dossier cible et que la source se cantonne à un seul dossier.
    Mon programme n'est pas terminé car ce que je fais à la main, est d'enregistrer l'image en lui donnant le nom "Img" + un numéro séquentiel.
    Or dans un autre répertoire, j'ai déjà disons "Img100", ...,"Img127". La prochaine image que je vais y stocker sera la "Img128".

    Comment trouver le prochain nom de l'image dans ce répertoire ?

    Cordialement.
    Artemus24.
    @+

  4. #4
    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
    Pour la suppression d'un dossier :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Remove-Item -LiteralPath "C:\dossier\sousdossier" -Recurse -Force -Confirm:$False
    Ou ceci pour utiliser le FrameWork :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    [System.IO.Directory]::Delete("C:\dossier\sousdossier", $true)



    l'accès au fichier cloud est refusé
    Qu'est ce donc ? Un dossier sur un espace synchronisé à un cloud ?

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut ericlm128.

    C'est pourtant la même commande (Remove-Item) que j'ai utilisé pour supprimer un répertoire.
    Voici ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Remove-Item : L'accès au fichier cloud est refusé
    Au caractère C:\Users\Patron\OneDrive\Bureau\Toto.ps1:1 : 1
    + Remove-Item -LiteralPath "C:\Users\Patron\OneDrive\Bureau\Windows_a_l ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Remove-Item], Win32Exception
        + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand
    
    Cliquez sur Entrée pour continuer...:
    Cordialement.
    Artemus24.
    @+

  6. #6
    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
    Et avec la deuxième méthode ?

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    [System.IO.Directory]::Delete("C:\dossier\sousdossier", $true)

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

Discussions similaires

  1. Mon premier programme
    Par brisso dans le forum C
    Réponses: 21
    Dernier message: 01/10/2006, 21h21
  2. mon premier programme j2me
    Par adilo dans le forum Java ME
    Réponses: 1
    Dernier message: 14/09/2006, 08h43
  3. [JDOM] Mon premier programme java-xml
    Par adilo dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 12/07/2006, 13h12
  4. [Language] Aide sur mon premier programme Java?
    Par hash2zo dans le forum Langage
    Réponses: 15
    Dernier message: 27/09/2005, 19h26
  5. [Débutant] Mon premier programme: rien ne va...
    Par vincent0 dans le forum OpenGL
    Réponses: 10
    Dernier message: 02/08/2005, 13h59

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