.bat qui creer des dossier

Résolu
mrizzx Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
mrizzx Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai fait un petit programme qui créer des fichier numéroté "Data1","Data2" etc..
En gros je vous explique : Le programme va vouloir créer un dossier de base Data0, et a chaque fois que je relance le programme, il va vouloir le recréer, sauf qu'il existe déjà, j'ai donc fait un petit test de condition, si le dossier existe, alors il va continuer à incrémenter jusqu'a "dataN" puis va créer le dossier "DataN", voici mon code, il ne marche pas...

set i=0

:test
if exist Data%i%( GOTO Incr )
GOTO creation

:Incr
set /a i=%i%+1
GOTO test

:creation
mkdir Data%i%


j'ai l'impression qu'il ne reconnait pas la condition if exist DataRecup%i%, le %i% pause problème

je débute dans le language batch.. savez vous pourquoi mon programme ne marche pas ?

Merci d'avance

4 réponses

jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

En fait
if exist
teste l’existence d'un fichier pas d'un répertoire.

L'astuce c'est de faire
if exist Data%i%\NUL (GOTO Incr  )
, NUL étant un fichier qui existe sous chaque répertoire.

cdlt
        un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
mrizzx Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonne astuce, mais ca ne marche toujours pas... Il ne détecte pas la condition... le fait de verifier un nom de dossier via une variable pause problème je pense..
0
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
chez moi ça marche ;-)

mais il faut lancer le .cmd depuis une fenetre dos, pas cliquer le .cmd, ou alors, pour cliquer dessus il faut mettre le chemin complet d'accès au répertoire C:\temp\... \test
0
mrizzx Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Fait, ne fonctionne pas voici mon code exact :


voici ce que ca donne lorsque j'execute via l'invite de commande :

0
mrizzx Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
AH ! J'ai trouvé tout seul... je ne savais pas que la syntaxe etait sensible aux espaces ! Donc
if exist DataRecup%i%\NUL( GOTO Incr )
DEVIENT
if exist DataRecup%i%\NUL (GOTO Incr )

Voilà, merci !
0