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 :

Incrémenter 1 à des noms de fichier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut Incrémenter 1 à des noms de fichier
    Bonjour,

    Voilà le problème que j'ai.
    J'ai des fichiers "1.txt" "2.txt" "3.txt" ...
    A chaque fois que je vais lancer le .bat que je peine à réaliser je dois ajouter 1 au numéro de fichier le plus élevé.

    J'ai essayé plusieurs solutions mais rien n'y fait je bloque à chaque fois sur un truc c'est pénible.

    1 - J'ai essayé avec une boucle FOR /R en récupérant la valeur Max des fichiers avant le ".txt". Mais impossible récupérer le max en dehors de la boucle.

    2 - Je stocke un fichier contenant uniquement le numéro max des fichiers "txt". Je récupère correctement cette valeur grâce à un for /f
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f %%i IN (%FILE_IDX%) DO (
    	set /a NP1 = 1+%%i
    	copy %DIR_FILES%\%%i.vbs %DIR_FILES%\%NP1%.vbs
    	echo %NP1% > %FILE_IDX%
    )
    Mais bizarrement quand je lance plusieurs fois le script j'obtiens ça.
    copy .\1.vbs .\2.vbs
    copy .\2.vbs .\2.vbs /!\
    copy .\2.vbs .\3.vbs
    Une fois sur 2 le numéro du fichier n'est pas incrémenté. J'y comprends rien.
    De toute manière cette solution n'est pas la meilleure. La top c'est la première ou je dois calculer la version max. Mais je pense que je serais confronté au même problème de calcul.

    Deplus je n'arrive à faire le calcul du max et resortir la variable en global pour ensuite ajouter 1 à cette valeur.

    Auriez une idée pour m'aider ? Merci

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    salut

    Peut-être en listant les fichiers en faisant un tri selon le nom, ce qui te permettra de relever la valeur la plus élevée.

  3. #3
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Effectivement c'est peut être une bonne idée mais la commande dir ne permet pas d'avoir une liste simple avec un nom de fichier par ligne.
    Alors comment faire ?

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    la commande DIR ne permet pas un tri numérique sur les fichiers le commutateur /on va trier tes fichiers littéralement et non pas numériquement.

    une des solutions possible (si l'incrément commence par 1.txt .. à n.txt)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set /A Cnt=1
      :#
    If Exist %Cnt%.txt (
       Set /A Cnt+=1
       goto:#
    )
    echo La valeur MAX+1 = %Cnt%

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    et si on transmet à la commande sort ?

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par minnesota Voir le message
    et si on transmet à la commande sort ?
    gnusort oui mais pas sort.exe

Discussions similaires

  1. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  2. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  3. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13
  4. récupérer des nom de fichiers en utilisant *.ext
    Par drinkmilk dans le forum ASP
    Réponses: 11
    Dernier message: 15/12/2004, 09h21
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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