[BATCH] Pb numérotation de fichiers

Pb numérotation de fichiers [BATCH] - Shell/Batch - Programmation

Marsh Posté le 29-05-2015 à 21:35:09    

Bonjour,
 
j'ai ce petit script qui fonctionne très bien pour renommer les fichiers dans un répertoire
 

Code :
  1. @echo off & color 0A
  2. set VrNvNom=NomFic
  3. set compte=0
  4. for %%i in (*.xxx) do set VrChmFch=%%i& set VrExtnFch=%%~xi& call :renmFch
  5. goto finRenmFch
  6. :renmFch
  7. set /a compte=%compte%+1
  8. ren "%VrChmFch%" "%VrNvNom%%compte%%VrExtnFch%"
  9. goto :eof
  10. :finRenmFch
  11. pause>nul


 
Mon problème c'est que la numérotation des fichiers commence à 1. Du coup, dès que le nombre de fichier dépasse 10, l'ordre des fichiers n'est plus bon :
 
Fic1
Fic10
Fic11
Fic2
 
Vous voyez le truc. Il y aurait moyen que la numérotation commence à 01 ou 001 ?
 
Merci  :hello:


---------------
Dieu se rit des hommes qui déplorent les effets dont ils chérissent les causes. J.-B. Bossuet
Reply

Marsh Posté le 29-05-2015 à 21:35:09   

Reply

Marsh Posté le 30-05-2015 à 12:50:44    

L'ordre des fichiers sera le même avec un ou deux zero précédants le significatif.C'est l'ordre lexicographique.
Pour faire ce que tu veux je crois que tu 'a pas le choix, c'est de numéroter les fichier avec un binaire, mais la c'est moins lisible.
Une autre soluce c'estde remplacer les chiffre par des lettres, mais c'est encore pas pareil.


Message édité par par l'anneau de l'ia le 30-05-2015 à 12:51:13

---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 30-05-2015 à 13:04:53    

Ah peut-être ça marche en fait ton truc.
Essais, simplement, je suis pas sur Windows pour tester là, mais de d'initialiser compteur à 0000.


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 30-05-2015 à 13:09:19    

J'allais dire je connais le problème et avec des zéros ça marche (mais ne me demandez pas comment modifier le script). Avant de poster je voulais quand même revérifier, je crée donc un dossier et fic1-fic13 sauf que... l'ordre est correct!!?!
 
fic1
fic2
fic3
...
fic10
fic11
fic13
 
Heu... Je comprends pas là... Il y a peut-être un endroit où on peut modifier le réglage par défaut?

Reply

Marsh Posté le 30-05-2015 à 15:15:31    

Un coup de google donne tout de suite des solutions: http://www.robvanderwoude.com/battech_leadingzero.php
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-05-2015 à 19:37:37    

rat de combat a écrit :

J'allais dire je connais le problème et avec des zéros ça marche (mais ne me demandez pas comment modifier le script). Avant de poster je voulais quand même revérifier, je crée donc un dossier et fic1-fic13 sauf que... l'ordre est correct!!?!
 
fic1
fic2
fic3
...
fic10
fic11
fic13
 
Heu... Je comprends pas là... Il y a peut-être un endroit où on peut modifier le réglage par défaut?


 
 
Peut-être ! https://support.microsoft.com/en-us/kb/319827


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 30-05-2015 à 20:29:39    

rat de combat a écrit :

J'allais dire je connais le problème et avec des zéros ça marche (mais ne me demandez pas comment modifier le script). Avant de poster je voulais quand même revérifier, je crée donc un dossier et fic1-fic13 sauf que... l'ordre est correct!!?!

 

fic1
fic2
fic3
...
fic10
fic11
fic13

 

Heu... Je comprends pas là... Il y a peut-être un endroit où on peut modifier le réglage par défaut?


Oui, au moment où tu exécutes le script, ça se met dans l'ordre, mais si tu fais un refresh de ton dossier, l'ordre va changer ;)

 

edit :

 

Après avoir lu ça

  

Je me dis que ça a peut-être marché et que je me fais des noeuds au cerveau pour rien [:tinostar]

 

Merci pour vos réponses :jap:

 

@gilou : je suis pas une truffe en anglais mais là le langage tech, j'ai pas tout suivi.

 

Message cité 1 fois
Message édité par Brad Pitt le 30-05-2015 à 20:33:23

---------------
Dieu se rit des hommes qui déplorent les effets dont ils chérissent les causes. J.-B. Bossuet
Reply

Marsh Posté le 30-05-2015 à 23:46:12    


Merci, je regarderai ça demain la tête reposée.

Reply

Marsh Posté le 31-05-2015 à 14:14:24    

Brad Pitt a écrit :

@gilou : je suis pas une truffe en anglais mais là le langage tech, j'ai pas tout suivi.


L'endroit ou tu fabriques tes numéros est le suivant:
set /a compte=%compte%+1
Donc tu peux essayer de remplacer cette ligne par
set /a compte=%compte%+1
set compte=0%compte%
set compte=%compte:~-2%
et ça devrait coller si tu n'as pas 100 fichiers ou plus.
 
set compte=0%compte% ça rajoute un zéro devant.
set compte=%compte:~-2% ça tronque à deux chiffres
 
Bon, faut aussi remplacer  
for %%i in (*.xxx) do set VrChmFch=%%i& set VrExtnFch=%%~xi& call :renmFch
par
for /f "delims=" %%i in ('DIR /a-d /b *.xxx') do set VrChmFch=%%i& set VrExtnFch=%%~xi& call :renmFch
parce que (Merci MSDOS) il récupère le premier fichier modifié et comme il a toujours l'extension xxx, il lui ré-applique le script  (un bug connu de ce genre de trucs en DOS: je teste chez moi avec a.xxx, b.xxx c.xx et ça fait ceci sinon: a.xxx -> NomFic01.xxx, b.xxx -> NomFic02.xxx, c.xxx -> NomFic03.xxx et en 4e, NomFic01.xxx -> NomFic04.xxx et ça s'arrète, donc au final j'ai NomFic02.xxx, NomFic03.xxx, NomFic04.xxx au lieu de NomFic01.xxx, NomFic02.xxx, NomFic03.xxx.)
Le for /f "delims=" %%i in ('DIR /a-d /b *.xxx') do ... est un truc connu qui permet de ne processer qu'une fois les noms de fichier lorsque les noms de fichiers en sortie remplissent les critères de sélection des noms de fichiers en entrée.
 
au final:

Citation :

@echo off & color 0A
set VrNvNom=NomFic
set compte=0
for /f "delims=" %%i in ('DIR /a-d /b *.xxx') do set VrChmFch=%%i& set VrExtnFch=%%~xi& call :renmFch
goto finRenmFch
:renmFch
set /a compte=%compte%+1
set compte=0%compte%
set compte=%compte:~-2%
ren "%VrChmFch%" "%VrNvNom%%compte%%VrExtnFch%"
goto :eof
:finRenmFch
pause>nul


Si tu as plus de 100 fichiers et moins de 1000, il faut remplacer
set compte=0%compte%  
set compte=%compte:~-2%
par
set compte=00%compte%
set compte=%compte:~-3%
 
A+,


Message édité par gilou le 31-05-2015 à 14:27:39

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 31-05-2015 à 15:45:12    

OK, merci bien :d
 
 
Ma soluce temporaire à l'arrache avait été de :
- claquer une première fois mon script
- déplacer les fichiers ayant un n° supérieur à 10 temporairement dans un autre rép
- modifier le script en mettant "set VrNvNom=NomFic0" à la place de "set VrNvNom=NomFic"
- claquer le script, comme ça mes 9 fichiers sont rename de 01 à 09
- rapatrier les autres fichiers
 
Bon je testerai celui de Gilou et si ça fonctionne ça sera quand même plus pratique :d


---------------
Dieu se rit des hommes qui déplorent les effets dont ils chérissent les causes. J.-B. Bossuet
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed