Script batch de renommage de masse de fichiers - Shell/Batch - Programmation
Marsh Posté le 17-09-2006 à 21:38:38
Fais une pause pour lire l'erreur renvoyée. 
 
A mon avis, comme le chemin complet des fichiers n'est pas fourni, ren n'a pas trouvé les fichiers à renommer. 
 
Sinon :  
set /a i+=1 
marche très bien 
Marsh Posté le 17-09-2006 à 21:52:19
C'est la commande ren, qui dit que le fichiers spécifié est introuvable à chaque fichier
Marsh Posté le 17-09-2006 à 22:18:08
Bah, j'avais donné la réponse : il fallait le chemin complet pour chacun des fichiers 
Marsh Posté le 17-09-2006 à 22:25:19
Ben j'ai fait ça: 
| Code : 
 | 
 
Et maintenant l'erreur dit: 
La syntaxe de la commande est incorrecte.
Marsh Posté le 17-09-2006 à 22:42:01
Enlève echo off pour identifier la ligne erronée. 
 
Mais tu compliques la vie là : il suffisait de compléter le chemin des fichiers.
Marsh Posté le 18-09-2006 à 16:37:42
Salut, 
 
| Code : 
 | 
 
 
Ca renomme uniquement les .jpg en partant de img1 .... imgi 
 
A+
Marsh Posté le 18-09-2006 à 17:08:11
Bonjour et merci beacoup 
 
Ca fonctionne chez toi ? 
Parce que chez moi non
Marsh Posté le 18-09-2006 à 17:10:15
yess ça fonctionne !!! pourtant y'a rien de compliqué là. 
Tu as bien changé le chemin c:\toto par le tiens ? 
Tes extensions sont .jpg et pas .jpeg ? 
 
Sinon quelle est l'erreur renvoyé.
Marsh Posté le 18-09-2006 à 17:13:49
Ah, non j'ai pas vu, voilà j'ai ratraper: 
| Code : 
 | 
 
Avec ça il me renomme une image img!i!.jpg 
Et c'est tout
Marsh Posté le 18-09-2006 à 17:15:53
OK 
Dc ça marche ?
Marsh Posté le 18-09-2006 à 17:18:12
Oui 
 
Merci encore   
 
Marsh Posté le 18-09-2006 à 17:21:18
Mais au fait, comment fait on pour annuler setlocal enabledelayedexpansion ?
Marsh Posté le 19-09-2006 à 10:12:47
pourquoi l'annuler ?? mais en réfléchissant un peu --> enable / disable
Marsh Posté le 19-09-2006 à 17:47:15
Donc c'est pas vraiment utilile de mettre endlocal ? 
 
Par ce que j'ai mis les script dans un batch ou il y a d'autre scripts, ça ne poserat pas de probléme pour mes variables ?
Marsh Posté le 19-09-2006 à 18:38:23
Si tu appelles le script en double-cliquant dessus, ça n'affecte pas ton environement. 
 
Par contre, si tu l'appelles depuis une invite, il est recommandé d'initialiser les variables localement, c'est-à-dire commencer le script par un setlocal et terminer par un endlocal. 
 
D'autres couples setlocal/endlocal peuvent être utilisés au long du script si nécessaire de modifier les réglages de l'environement.
Marsh Posté le 19-09-2006 à 19:07:55
Donc setlocal n'est pas néccésaire pour le fonctionnement le la boucle dans mon batch alor ?
Marsh Posté le 19-09-2006 à 20:30:35
Ca dépend de comment est configuré l'environement dans lequel il est lancé. 
 
Bref, faut que tu relises l'aide de la commande setlocal et l'utilité de ses params.
Marsh Posté le 19-09-2006 à 20:55:15
Ben dans tout mes batch je créer des variable style: 
 
| Code : 
 | 
Que j'utilise comme suit: 
| Code : 
 | 
Je n'avais jammais entrer setlocal mais cette forme de variable à toujours fonctionner 
Mais dans les boucle For il y a un sytéme d'expension de variable que je n'ai jamais réussi à piger, dans la boucle que tu ma filer tu appele la varible comme ça: 
| Code : 
 | 
Donc je me demande si le setlocal/endloca sert uniquement dans ce case là ?
Marsh Posté le 19-09-2006 à 20:56:55
Ce que je pige pas c'est si le setlocale est indispensable pour que les variable sous la forme suivante dans les boucle for: 
| Code : 
 | 
Marsh Posté le 19-09-2006 à 21:52:34
Non, ça ce n'est pas setlocal tout court mais  
setlocal ENABLEDELAYEDEXPANSION 
c'est pourquoi je t'ai recommandé de relire l'aide de setlocal. 
 
Fais aussi 
set /? 
où cette option est expliquée et des exemples sont donnés. 
 
Et comme je disais, cette commande est nécessaire ou pas, ça dépend de comment ton invite de commandes est configurée à la base. Si tu veux qu'un script soit portable, il est recommandé de le commencer par définir son environnement d'exécution.
Marsh Posté le 19-09-2006 à 22:00:20
Il y a un truc que je ne comprends pas dans l'aide de setlocal: 
 
| Citation : Cela marche, car sur les anciennes versions de CMD.EXE, SETLOCAL NE fixe PAS  | 
 
 
setlocal ENABLEDELAYEDEXPANSION  pourait annuler les errorlevel ?
Marsh Posté le 17-09-2006 à 13:24:35
Bonjour, j'ai un script sensé renommer en masse des fichiers:
Mais il ne fonctionne pas, sauriez vous m'aider à aranger ça ?