Fichier Batch [Résolu]

Signaler
-
 Mayu -
Salut !
Je cherche à faire un petit Script qui permet de créer un dossier et des sous dossier.
La première fois, il va directement à la création et créé les dossiers.
La seconde fois, je voudrais qu'il renomme le dossier "Travail" en "Travail1" et faire la création comme la première fois.
La troisième fois, je voudrais qu'il renomme le dossier "Travail" en Travail2 (puisque le test indiquera que "Travail1" existe) et fait la création comme la première fois.

Le FOR semble fonctionner mais il ne se passe rien. Je n'arrive pas à concaténer le mot Travail et le chiffre. J'ai essayé SET Dossier="Travail" AND %I% mais ça ne marche pas. Si je fais ECHO %Dossier%, il m'affiche bêtement "Travail" AND %I%. Merci.

IF NOT EXIST "Travail" (GOTO Creation)

:Cherche
FOR /L %I IN (1,1,10) DO
(
SET Dossier=Travail%I%
IF NOT EXIST %Dossier% (GOTO Renomme)
)
GOTO Fin

:Renomme
REN "Travail" %Dossier%

:Creation
mkdir "Travail"
mkdir "Travail\JPEG"
mkdir "Travail\JPEG 1080"
mkdir "Travail\JPEG 1920"
mkdir "Travail\MSU Deflicker"
mkdir "Travail\RAW"

:Fin

3 réponses

Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491
Bonjour,

La commande REN renomme uniquement des fichiers, pour renommer des dossiers il faut utiliser la commande MOVE.

Concernant la variable de la boucle FOR, dans une invite de commandes elle se nomme %I mais à l'intérieur d'un script batch il faut doubler le % elle se nomme donc %%I, par conséquent votre commande est incorrecte :
SET Dossier=Travail%I% à remplacer par SET Dossier=Travail%%I


Concernant la variable %Dossier% elle est située à l'intérieur d'un bloc FOR donc il faut la retarder sinon elle ne fonctionnera pas comme attendu. Il faut donc activer l'expansion retardée au début du script comme ceci :
setlocal enabledelayedexpansion

Puis il faut indiquer qu'on souhaite retarder la variable, donc on remplacera %Dossier% par !Dossier!




“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Messages postés
3978
Date d'inscription
lundi 16 juillet 2007
Statut
Contributeur sécurité
Dernière intervention
29 juillet 2021
1 425
Hello, après vérification je confirme que REN fonctionne sur un dossier.
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491 >
Messages postés
3978
Date d'inscription
lundi 16 juillet 2007
Statut
Contributeur sécurité
Dernière intervention
29 juillet 2021

Bien vu ! J'ai réussi également, contrairement à ce que dit l'aide de la commande.

J'ai l'impression que c'est nouveau, il faut que je vérifie ça sur d'autres windows plus anciens.
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491 >
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021

Après vérification sur Windows 7 il s'avère que ce n'est pas nouveau.
Messages postés
720
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
29 juillet 2021
45 >
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021

La commande est "undocumented" (donc imprévisible?).
Mais il semble certain que, dans ces conditions, REN ne peut avoir pour destination un dossier inexistant et qu'il ne supporte pas les wildcards.
Merci mais après les corrections, je suis au même résultat. Rien ne se produit la seconde fois.
IF NOT EXIST "Travail" (GOTO Creation)

:Cherche
FOR /L %%I IN (1,1,10) DO
(
SET Dossier=Travail%%I
setlocal enabledelayedexpansion
IF NOT EXIST !Dossier! (GOTO Renomme)
)
GOTO Fin

:Renomme
REN "Travail" %%Dossier

:Creation
mkdir "Travail"
mkdir "Travail\JPEG"
mkdir "Travail\JPEG 1080"
mkdir "Travail\JPEG 1920"
mkdir "Travail\MSU Deflicker"
mkdir "Travail\RAW"

:Fin
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491
Tu devrais mettre le setlocal plus haut.

Je vois un gros problème ici :
REN "Travail" %%Dossier à remplacer par REN "Travail" "!Dossier!"
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491 >
Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021

Je viens de remarquer un problème potentiel : la première parenthèse du bloc d'instructions du FOR doit se trouver sur la même ligne que le FOR, et non une ligne en dessous.
Impec ! Merci. L'erreur venait bien de la parenthèse.