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 :

Batch ou PowerShell [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut Batch ou PowerShell
    Bonjour,

    Je recherche un batch ou un powershell qui me permet de remplacer tous les fichiers du même nom mais uniquement certaines extensions par ceux du même nom seulement s'ils sont plus récents.
    En gros un Xcopy d'un dossier vers un autre qui rajoutera aussi les fichiers manquants mais qui n'écrasera pas les fichiers s'ils ont même date de modification de création.

    Ex: C:\Temp (fichiers *.jpg, *.gif, *.png) vers C:\Temp2
    Chaque dossier peut contenir des sous dossiers

    D'avance merci pour votre aide

    Bonne continuation

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut En gros c'est un XCOPY
    En gros ce serait un XCOPY "dossier A" "dossier B" /E /I /Y
    Mais avec un contrôle sur la date de création/modification du fichier.
    Auriez-vous une technique ou astuce svp?

  3. #3
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par Angeldu74 Voir le message
    En gros ce serait un XCOPY "dossier A" "dossier B" /E /I /Y
    Mais avec un contrôle sur la date de création/modification du fichier.
    Auriez-vous une technique ou astuce svp?

    Xcopy /D

    D'après l'aide (help) de la commande xcopy /?
    /D:j-m-a Copie les fichiers modifiés à partir de la date spécifiée.
    Si aucune date n’est donnée, copie uniquement les fichiers dont
    l’heure source est plus récente que l’heure de destination.

  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
    En Powershell, j'ai tenté d'apporter des explications et d'écrire un code clair

    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
    36
    37
    38
    39
    40
    # Définition, des variables
    $source = "C:\Temp"
    $destination = "C:\Temp2"
    $filter = "*.jpg", "*.gif", "*.png"
     
     
    # récupère la liste des fichiers répondant au filtre
    $files = Get-ChildItem $source -Recurse -Include $filter -File -ErrorAction SilentlyContinue
     
    # pour chacun de ses fichier
    foreach($fileSrc in $files)
    {
        # Définit le chemin de destination
        $fileDstPath = Join-Path -Path $destination -ChildPath $fileSrc.FullName.Remove(0, $destination.Length)
     
        # Vérifie si le fichier de destination existe déjà
        if (Test-Path $fileDstPath -PathType Leaf)
        {
            # Récupère les informations (FileInfo) du fichier de destination
            $fileDst = Get-Item -LiteralPath $fileDstPath -Force
     
            # Compare les dates entre le fichier source et cible
            if ($fileSrc.CreationTimeUtc -eq $fileDst.CreationTimeUtc -and $fileSrc.LastWriteTimeUtc -eq $fileDst.LastWriteTimeUtc)
            {
                # Si les dates sont identiques, on passse au fichier suivant
                continue
            }
        }
     
        # Vérifie si le dossier de destination existe
        $folder = Split-Path -Path $fileDstPath -Parent
        if (-not (Test-Path $folder -PathType Container))
        {
            # Si il n'existe pas on le créé
            New-Item $folder -Type Directory
        }
     
        # Copie le fichier cible vers la destination
        Copy-Item -LiteralPath $fileSrc.FullName -Destination $fileDstPath -Force
    }

  5. #5
    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
    Je tenai à préciser qu'une fois le fichier copié il n'a plus la même date de création

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut Suite XCOPY et Powershell
    Hello!
    Grand grand MERCI c'est exactement cela que je voulais.

    Excellente continuation
    A+

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

Discussions similaires

  1. [PowerShell] Passage de variables entre script BATCH et PowerShell
    Par Tchupacabra dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/03/2015, 11h27
  2. Réponses: 1
    Dernier message: 28/11/2014, 21h51
  3. [Batch] Script de copie de fichier (batch ou powershell?)
    Par kondor76 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/09/2014, 16h28
  4. Activation Office 2010 en Batch ou Powershell
    Par Kanon89 dans le forum Windows 7
    Réponses: 2
    Dernier message: 19/11/2013, 18h20

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