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 :

Remplacer 0 au début d'un nom de fichier [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
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Par défaut Remplacer 0 au début d'un nom de fichier
    Bonjour à tous,

    J'ai des fichiers pdf qui arrivent tous les jours dans un dossier sous la forme suivante, par exemple 005325.pdf 000025.pdf etc... (toujours sur 6 caractères)

    Dans mon script j’extrais le numéro du PDF avant de le comparer a des dossiers nommés sous la forme suivante : 0-999 1000-1999 2000-2999 jusqu'a 499000-500000.

    Je parcours donc les dossiers et je compare mon numéro de PDF à mes numéros de dossiers et si le numéro de PDF est compris entre les deux chiffres du dossier alors je le copie dedans.

    Exemple :

    000850.pdf est supérieur à 0 et inférieur à 999 donc je le copie dans le dossier 0-999

    Seulement voila, je voudrais supprimer les 0 inutiles dans le nom du pdf, par exemple 000850 devient 850 ou 055223 devient 55223

    Donc si vous savez comment je pourrais m'y prendre pour supprimer ces 0 cela m'arrangerait beaucoup.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Met ce BAT dans le même répertoire que tes PDF
    et lançe le.

    J'ai mis un echo avant le move pour que tu puisses tester sans risque.
    Si la sortie est correct pour toi enlève l'echo.



    Code : 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
    @echo off
    
    setlocal enabledelayedexpansion
    
    for /f "delims=" %%x in ('dir /a-d/b *.pdf') do call:resolution %%~nx
    echo Termin‚
    pause
    exit/b
    
    :resolution
    set $final=
    set $traite=%1
    for /l %%a in (0,1,999) do (
     set $car=!$traite:~%%a,1!
     if defined $car  if  not !$car!==0 (
            set $final=!$traite:~%%a!
            goto:final)
    )
    
    
    :final
    echo move "%1.pdf" "!$final!.pdf"

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Par défaut
    Pourrais-tu me décrire un petit eu ce que tu fais s'il te plait ?

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    En fait c'est simple.

    je récupère le nom des fichiers PDF dans une un boucle for et j'envoie ce nom dans la moulinette :resolution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%x in ('dir /a-d/b *.pdf') do call:resolution %%~nx
    Dans :resolution on test chaque caractère de gauche à droite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /l %%a in (1,1,999) do (
     set $car=!$traite:~%%a,1!
    jusqu'à ce que l'on trouve une valeur différente de 0.
    Lorsque l'on trouve une valeur différente de 0 on a notre Numéro sans les 0.
    On set alors $final depuis la position actuelle jusqu'à la fin du nom et on envoie dans le label :final.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if defined $car  if  not !$car!==0 (
            set $final=!$traite:~%%a!
            goto:final)
    Dans :final on fait le move avec le nom sans les zeros.


  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Par défaut
    Super, simple et efficace.

    Merci pour tes explications

    Je mets un joli RESOLU

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

Discussions similaires

  1. [Batch] Supprimer le début d'un nom de fichier en batch.
    Par FreeDo dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 06/06/2013, 14h29
  2. Réponses: 8
    Dernier message: 10/03/2010, 15h51
  3. Réponses: 13
    Dernier message: 22/04/2009, 16h43
  4. Réponses: 11
    Dernier message: 02/08/2007, 09h04
  5. Réponses: 17
    Dernier message: 12/04/2005, 15h28

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