Renommer dossiers par lots dans un batch

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci. Contient des rubriques électroniques.

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Renommer dossiers par lots dans un batch

Message par __sam__ »

Il faut doubler le % uniquement dans le paramètre du FOR. Pour la commande de COPY il faut un seul %. J'ai jamais compris la logique de ce truc, mais c'est comme ca que ca marche (et globalement DOS est une daube sans nom quand il sagit de jouer avec les substitutions.)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Renommer dossiers par lots dans un batch

Message par Falkor »

Bon, j'ai trouvé, c'est hyper vicieux :

Code : Tout sélectionner

FOR /R c:\curl %%I IN (*.png) DO copy %%~I c:\zorkdemo\%%~nxI 
En fait, il ne faut pas appeler la variable de boucle %N mais %I, car toutes les substitutions données dans l'exemple marchent avec la lettre !

Et il faut bien double % partout :roll:

Merci du coup de main !!
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Renommer dossiers par lots dans un batch

Message par __sam__ »

Ouf! C'est vrai que c'est un b*rdel ces trucs Des fois il faut utiliser !VARIABLE! au lieu de %VARIABLE%, des fois %%I, des fois uniquement %I (et pas %I%)... Je ne sais pas quel les le c*n qui a inventé MSDOS, mais il ne maitrise pas bien la notion de langage bien structuré. Pour le coup je crois que ton erreur était d'avoir mis %%~nxI au lieu de %%~nxN dans le paramètre du COPY car mon exemple avec la variable N marche bien

Code : Tout sélectionner

FOR /R c:\temp\source %N in (*.*) do ren %N c:\temp\dest\%~nxN 
(bien sur en doublant le % quand on execute dans un fichier .BAT)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre