[batch] Tester l'existence d'un répertoire (a
Résolu/Fermé
mazkime
Messages postés
18
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
-
21 sept. 2007 à 16:39
ChemicalMouse - 29 juin 2012 à 15:32
ChemicalMouse - 29 juin 2012 à 15:32
A voir également:
- If exist
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Fichier batch - Guide
- Tester composant pc - Guide
- Tester signal wifi gratuit - Guide
15 réponses
Non, l'ajout du \ ou d'un \. ne règle pas le problème.
SVP, de grâce, avant de poster des bêtises, je vous rappelle qu'il y a 4 choses à vérifier pour répondre correctement à la question d'origine :
1) si le répertoire existe, ça doit dire "OUI" (qu'il soit vide ou qu'il contienne des fichiers, peu importe)
2) s'il existe déjà un fichier qui porte ce nom, ça doit dire "NON" (car c'est un fichier et non un répertoire ! Et dans un dossier on ne peut pas avoir un fichier et un répertoire qui portent le même nom)
3) s'il n'y a ni fichier ni répertoire avec ce nom-là, ça doit dire "NON" aussi.
4) la solution proposée doit être compatible avec les noms qui contiennent des espaces.
Avant de poster quoi que ce soit, merci de prendre le temps de tester que vos propositions répondent bien à ces quatre critères.
Parmi toutes les solutions qui ont été proposées ci-dessus, jusqu'à présent (et sauf erreur de ma part), AUCUNE ne satisfait ces 4 critères-là en même temps.
Maintenant, je vous en propose une qui semble fonctionner correctement :
IF exist "mon nom de repertoire\*.*" echo OUI
IF NOT exist "mon nom de repertoire\*.*" echo NON
Je viens de vérifier : si je me suis pas planté, cette solution satisfait les 4 critères mentionnés ci-dessus. Les guillemets sont là pour gérer les noms contenant des espaces, et le wildcard *.* permet de distinguer les fichiers (réponse NON) des répertoires (réponse OUI). Petit détail qui a son importance : meme si le répertoire est vide, le wildcard *.* renvoit quand meme OUI car il y a toujours deux fichiers qui sont présents, même dans les répertoires "vides" : il s'agit de . et de ..
Voilà voilà, bonne programmation ! :-)
SVP, de grâce, avant de poster des bêtises, je vous rappelle qu'il y a 4 choses à vérifier pour répondre correctement à la question d'origine :
1) si le répertoire existe, ça doit dire "OUI" (qu'il soit vide ou qu'il contienne des fichiers, peu importe)
2) s'il existe déjà un fichier qui porte ce nom, ça doit dire "NON" (car c'est un fichier et non un répertoire ! Et dans un dossier on ne peut pas avoir un fichier et un répertoire qui portent le même nom)
3) s'il n'y a ni fichier ni répertoire avec ce nom-là, ça doit dire "NON" aussi.
4) la solution proposée doit être compatible avec les noms qui contiennent des espaces.
Avant de poster quoi que ce soit, merci de prendre le temps de tester que vos propositions répondent bien à ces quatre critères.
Parmi toutes les solutions qui ont été proposées ci-dessus, jusqu'à présent (et sauf erreur de ma part), AUCUNE ne satisfait ces 4 critères-là en même temps.
Maintenant, je vous en propose une qui semble fonctionner correctement :
IF exist "mon nom de repertoire\*.*" echo OUI
IF NOT exist "mon nom de repertoire\*.*" echo NON
Je viens de vérifier : si je me suis pas planté, cette solution satisfait les 4 critères mentionnés ci-dessus. Les guillemets sont là pour gérer les noms contenant des espaces, et le wildcard *.* permet de distinguer les fichiers (réponse NON) des répertoires (réponse OUI). Petit détail qui a son importance : meme si le répertoire est vide, le wildcard *.* renvoit quand meme OUI car il y a toujours deux fichiers qui sont présents, même dans les répertoires "vides" : il s'agit de . et de ..
Voilà voilà, bonne programmation ! :-)
Bonjour
Ayant eu le meme probleme je me suis aussi creuse la tete...
La solution MS ne me satisfaisait pas, surtout pour le cas ou on a pas les droits en ecriture ...
J'ai trouve la solution suivante
la commande "dir" definie la variable ERRORLEVEL à 0 qd le reperoire existe et à 1 qd il n'existe pas ...
Ayant eu le meme probleme je me suis aussi creuse la tete...
La solution MS ne me satisfaisait pas, surtout pour le cas ou on a pas les droits en ecriture ...
J'ai trouve la solution suivante
la commande "dir" definie la variable ERRORLEVEL à 0 qd le reperoire existe et à 1 qd il n'existe pas ...
mazkime
Messages postés
18
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
11
21 sept. 2007 à 18:15
21 sept. 2007 à 18:15
J'ai finalement trouvé la solution à mon problème, grâce à... microsoft !
En cherchant désespérément sur le net, je suis tombé sur la page suivante : https://support.microsoft.com/fr-fr/help/463550
Ils s'y prennent d'une façon différente de la mienne : ils essaient de copier un fichier dans le répertoire que l'on veut tester, puis testent l'existence du fichier. Je trouve ça moins élégant, mais au moins ça marche !
A+
En cherchant désespérément sur le net, je suis tombé sur la page suivante : https://support.microsoft.com/fr-fr/help/463550
Ils s'y prennent d'une façon différente de la mienne : ils essaient de copier un fichier dans le répertoire que l'on veut tester, puis testent l'existence du fichier. Je trouve ça moins élégant, mais au moins ça marche !
A+
karirovax
Messages postés
3221
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
203
20 mai 2010 à 21:22
20 mai 2010 à 21:22
salut
au lieu de tester l'existance d'un repertoire , testez l'existance d'un fichier sous cet repertoire.
;)
au lieu de tester l'existance d'un repertoire , testez l'existance d'un fichier sous cet repertoire.
;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
20 mai 2010 à 15:39
20 mai 2010 à 15:39
et comme ça
@echo off
set rep="test avec espace"
if exist %rep% echo existe & goto FIN
echo repertoire cree
mkdir %rep%
:FIN
@echo off
set rep="test avec espace"
if exist %rep% echo existe & goto FIN
echo repertoire cree
mkdir %rep%
:FIN
mazkime
Messages postés
18
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
11
21 sept. 2007 à 17:05
21 sept. 2007 à 17:05
j'ai fait le test et ça ne marche pas. Visiblement, ça ne vient pas seulement de mon script, mais même directement dans la console, je n'arrive pas à faire fonctionner mon test.
Je m'explique :
si je crée un répertoire TEST directement à la racine de C, et que je teste son existence :
if exist C:\TEST\nul echo C'est un répertoire
le test va bien marcher et m'affichier "C'est un répertoire"
Par contre, si je crée un répertoire "TEST TOTO" et que je teste son existence, le teste renvoie toujours faux (donc il ne voit pas que c'est un répertoire), et ce quelque soit la ligne de commande que je tape :
if exist C:\"TEST TOTO"\nul echo C'est un répertoire
if exist "C:\TEST TOTO"\nul echo C'est un répertoire
if exist "C:\TEST TOTO\nul" echo C'est un répertoire
Je cherche donc comment faire marcher le test directement dans la console. Dans un deuxième temps, je l'incluerai dans le script (en espérant que ça soit simple...)
Je m'explique :
si je crée un répertoire TEST directement à la racine de C, et que je teste son existence :
if exist C:\TEST\nul echo C'est un répertoire
le test va bien marcher et m'affichier "C'est un répertoire"
Par contre, si je crée un répertoire "TEST TOTO" et que je teste son existence, le teste renvoie toujours faux (donc il ne voit pas que c'est un répertoire), et ce quelque soit la ligne de commande que je tape :
if exist C:\"TEST TOTO"\nul echo C'est un répertoire
if exist "C:\TEST TOTO"\nul echo C'est un répertoire
if exist "C:\TEST TOTO\nul" echo C'est un répertoire
Je cherche donc comment faire marcher le test directement dans la console. Dans un deuxième temps, je l'incluerai dans le script (en espérant que ça soit simple...)
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
20 mai 2010 à 16:02
20 mai 2010 à 16:02
sans "\nul", "test avec espace" est interprété comme fichier et non comme dossier.
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
20 mai 2010 à 16:14
20 mai 2010 à 16:14
oui, mais si un fichier "test avec espace" existe, je ne peux pas créer un répertoire avec ce nom
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
20 mai 2010 à 16:51
20 mai 2010 à 16:51
ok dans le sans ou tu veux utiliser la fonction IF pour la création d'un répertoire, ce qui n'est pas mon cas.
ce que je veux faire c'est ca :
Si le dossier "blablabla" existe
> aller dans le dossier
> rechercher le fichier uninstall
> executer la désinstallation du logiciel
Sinon
> afficher "le logiciel bla bla bla n'existe pas"
Impossible pour le moment de réussir cela.
Mon post concernant cela :
https://forums.commentcamarche.net/forum/affich-17790540-dos-verifier-l-existance-d-un-dossier#p17790540
ce que je veux faire c'est ca :
Si le dossier "blablabla" existe
> aller dans le dossier
> rechercher le fichier uninstall
> executer la désinstallation du logiciel
Sinon
> afficher "le logiciel bla bla bla n'existe pas"
Impossible pour le moment de réussir cela.
Mon post concernant cela :
https://forums.commentcamarche.net/forum/affich-17790540-dos-verifier-l-existance-d-un-dossier#p17790540
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
21 sept. 2007 à 16:42
21 sept. 2007 à 16:42
mettre la variable entre guillemets "%1"
Petit remontage pour ceux qui tombe sur ce topic en cherchant les mêmes infos :
@echo off
set rep="test avec espace"
if exist %rep%\nul echo existe & goto FIN
echo repertoire cree
mkdir %rep%
:FIN
marche parfaitement
@echo off
set rep="test avec espace"
if exist %rep%\nul echo existe & goto FIN
echo repertoire cree
mkdir %rep%
:FIN
marche parfaitement
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
20 mai 2010 à 13:54
20 mai 2010 à 13:54
Bonjour,
Pour moi ca ne marche pas...
Si le répertoire n'existe pas, effectivement le script crée le répertoire.
En revenche, si le répertoire existe, il ne m'affiche pas le message "existe" mais
"repertoire cree"
Un sous-répertoire ou un fichier <test dosser> existe déjà.
Configuration: Windows XP / Firefox 3.6
Pour moi ca ne marche pas...
Si le répertoire n'existe pas, effectivement le script crée le répertoire.
En revenche, si le répertoire existe, il ne m'affiche pas le message "existe" mais
"repertoire cree"
Un sous-répertoire ou un fichier <test dosser> existe déjà.
Configuration: Windows XP / Firefox 3.6
set myDir = %CD%\myDirectory\.
if not exist %myDir% echo Not Exist !
l'ajout du "\." fonctionne très bien aussi, et sans "copier" de fichier :)
if not exist %myDir% echo Not Exist !
l'ajout du "\." fonctionne très bien aussi, et sans "copier" de fichier :)
mazkime
Messages postés
18
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
11
13 déc. 2007 à 20:07
13 déc. 2007 à 20:07
J'avais déjà testé cette solution, et elle ne marche pas. J'ai finalement gardé la solution Microsoft qui marche très bien.
29 juin 2012 à 15:32