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/Powershell] Supprimer fichier si pas d'autre fichier avec le même nom [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 44
    Points
    44
    Par défaut [Batch/Powershell] Supprimer fichier si pas d'autre fichier avec le même nom
    Bonsoir,

    Mis à part quelques souvenirs des cours d'algo, je suis un total débutant en programmation.

    Mon besoin est je pense très simple, je souhaiterai avoir un petit batch ou PS qui supprime les fichiers dans un répertoire donné lorsqu'ils n'ont pas de doublon.

    Le contexte est que je prends des photos en format JPEG et RAW et que je fais mon tri sur les JPEG puis supprime les RAW qui n'ont plus de JPEG associé.

    En espérant avoir été clair....

    J'ai fait des recherches sur internet mais je n'ai pas retrouvé de besoin similaire ou n'ai peut être pas tapé les bons mots clés.

    Merci d'avance de vos retours.

  2. #2
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Bonjour,
    Je ne suis pas certain de mon code alors veillez à le tester à part:

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off & cls
    setlocal enabledelayedexpansion
    for /r %%F in (*.raw) do (
        set DuplicateFileName=%%~dpnF.jpg
        if exist !DuplicateFileName! (
            if errorlevel 0 (
                echo On supprime ce fichier %%F
            )
        )
    )
    pause
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    @devilsnake88: il faut un chemin d'accès dans la boucle for /r et guillemet autour des chemins d'accès surtout quand ils contiennent une variable.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    cls
    setlocal enabledelayedexpansion
     
    for /r %1 %%F in (*.raw) do (
        set "DuplicateFileName=%%~dpnF.jpg"
        if exist "!DuplicateFileName!" (
            del /q "%%F"
        )
    )

    puis tu appel le script ci-dessus avec la commande suivante, ou <script_name> est le nom du script ci-dessus et <path_of directory> le chemin d'accès du dossier qui contient tes RAW.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script_name> "<path_of directory>"
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 44
    Points
    44
    Par défaut Merci
    Merci à vous deux pour vos réponses.

    J'ai donc utilisé la partie de code corrigée InitSreen et cela a eu pour effet de supprimer uniquement les fichiers RAW qui avait leur pendant JPG.
    A peu près l'inverse de ce que je souhaitais

    Du coup j'ai adapté et à la place de supprimer les fichiers, cela les copie dans un sous répertoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    cls
    setlocal enabledelayedexpansion
     
    for /r %1 %%F in (*.CR2) do (
        set "DuplicateFileName=%%~dpnF.JPG"
        if exist "!DuplicateFileName!" copy "%%F" "D:\testsuppr\RAW" 
           
        
    )
    
    pause
    Bref cela répond à mon besoin, mission accomplie grâce à vous !

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Désolé j'avais mal compris, essaie cela sinon

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @echo off
    cls
    setlocal enabledelayedexpansion
     
    for /r %1 %%F in (*.raw) do (
        set "DuplicateFileName=%%~dpnF.jpg"
        if not exist "!DuplicateFileName!" (
            del /q "%%F"
        )
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

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

Discussions similaires

  1. Supprimé des lignes d'un fichier contenu dans un autre fichier
    Par nekcorp dans le forum Général Python
    Réponses: 12
    Dernier message: 05/05/2014, 21h27
  2. Réponses: 9
    Dernier message: 08/10/2013, 21h22
  3. Supprimer ligne si pas dans autre table
    Par Dominique49 dans le forum Requêtes
    Réponses: 6
    Dernier message: 12/01/2012, 17h48
  4. Réponses: 1
    Dernier message: 25/03/2006, 14h45
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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