Fichier Batch
Résolu
Mayu
-
Mayu -
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.
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
A voir également:
- Fichier Batch
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier batch - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
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 :
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 :
Puis il faut indiquer qu'on souhaite retarder la variable, donc on remplacera %Dossier% par !Dossier!
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!
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
J'ai l'impression que c'est nouveau, il faut que je vérifie ça sur d'autres windows plus anciens.
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.