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 de fichiers dans une boucle [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut Suppression de fichiers dans une boucle
    Bonjour à tous ,

    J'ai écris la commande ci-dessous pour supprimer à la racine d'emplacements spécifiques, des fichiers qui ont un nom composé uniquement d'une séquence d'un ou plusieurs caractère(s) alphabétique(s) et/ou point(s) d'exclamation, suivie d'une séquence de 5 chiffres (de 0 à 9) ou plus, et d'une extension d'un ou plusieurs caractères :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /F "eol=? delims=" %%G IN ('dir /A:-D-L /B "%~dp0archive\Desktop" "%~dp0archive\Documents" "%~dp0archive\Pictures" ^| findstr /R /C:"[a-Z!][0-9][0-9][0-9][0-9][0-9][0-9]*\.[^\.][^\.]*$"') Do del /a /f /q "%%~G"
    Je rencontre un problème avec la commande
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    del /a /f /q "%%~G"
    Je ne trouve pas comment lui donner l'emplacement spécifique du/des fichier(s) trouvé(s). Avec la commande actuelle, c'est la racine de l'emplacement %~dp0archive qui est prise en compte.

    Je pensais à modifier la commande en définissant manuellement les emplacements comme ceci :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    del /a /f /q "%~dp0archive\Desktop\%%~G" "%~dp0archive\Documents\%%~G" "%~dp0archive\Pictures\%%~G"
    mais cela déclenche la suppression sur tous les emplacements à la fois alors qu'un fichier localisé à un emplacement l'est pas forcément sur les 2 autres. J'ai aussi pensé à utiliser la condition if exist mais cela peut augmenter significativement le délai de suppression d'autant qu'il y a beaucoup de fichiers à traiter.

    N'est-il pas possible de récupérer plutôt l'emplacement réel de chaque fichier trouvé et de donner cet emplacement à la commande del

    Merci de vos éclairages

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    Essaie comme ceci :
    Pour plus d'explications tu peux consulter l'aide de la commande FOR : for /?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Bonjour,

    Essaie comme ceci :
    Pour plus d'explications tu peux consulter l'aide de la commande FOR : for /?
    J'avais aussi essayé cette commande mais c'est la racine de l'emplacement %~dp0archive qu'il prend en compte.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Essaie comme cela alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for %%A in (Desktop Documents Pictures) do (
    FOR /F "eol=? delims=" %%G IN ('2^>nul dir /A-D-L /B "%%~A" ^| findstr /R /C:"[a-Z!][0-9][0-9][0-9][0-9][0-9][0-9]*\.[^\.][^\.]*$"') Do del /a /f /q "%%~fG"
    )

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Essaie comme cela alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for %%A in (Desktop Documents Pictures) do (
    FOR /F "eol=? delims=" %%G IN ('2^>nul dir /A-D-L /B "%%~A" ^| findstr /R /C:"[a-Z!][0-9][0-9][0-9][0-9][0-9][0-9]*\.[^\.][^\.]*$"') Do del /a /f /q "%%~fG"
    )
    C'est toujours pareil, idem en spécifiant l'emplacement des dossiers dans la 1ère boucle comme ceci :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for %%A in (%~dp0archive\Desktop %~dp0archive\Documents %~dp0archive\Pictures) do (
    FOR /F "eol=? delims=" %%G IN ('2^>nul dir /A-D-L /B "%%~A" ^| findstr /R /C:"[a-Z!][0-9][0-9][0-9][0-9][0-9][0-9]*\.[^\.][^\.]*$"') Do del /a /f /q "%%~fG"
    )

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Ok cette fois-ci c'est la bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cd /d "%~dp0archive"
    for %%A in (Desktop Documents Pictures) do (
    FOR /F "eol=? delims=" %%G IN ('2^>nul dir /A-D-L /B "%%~dpnA" ^| findstr /R /C:"[a-Z!][0-9][0-9][0-9][0-9][0-9][0-9]*\.[^\.][^\.]*$"') Do del /a /f /q "%%~dpnA\%%~G"
    )

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

Discussions similaires

  1. [BATCH] DOS, déplacement de fichier dans une boucle FOR
    Par nicoga dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 14/11/2008, 14h36
  2. ouverture fichier dans une boucle
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2008, 18h52
  3. Enregistrer des fichiers dans une boucle
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2008, 13h17
  4. [Fortran 77] Renommer un fichier dans une boucle
    Par mehdi_oca dans le forum Fortran
    Réponses: 3
    Dernier message: 04/01/2008, 14h38
  5. Renommer un fichier dans une boucle
    Par Thomas Carrere dans le forum C
    Réponses: 5
    Dernier message: 05/05/2006, 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