Pb numérotation de fichiers [BATCH] - Shell/Batch - Programmation
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.
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.
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?
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+,
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!!?! |
Peut-être ! https://support.microsoft.com/en-us/kb/319827
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 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
Merci pour vos réponses
@gilou : je suis pas une truffe en anglais mais là le langage tech, j'ai pas tout suivi.
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 |
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+,
Marsh Posté le 31-05-2015 à 15:45:12
OK, merci bien
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
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
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
---------------
Dieu se rit des hommes qui déplorent les effets dont ils chérissent les causes. J.-B. Bossuet