Rechercher : dans
Par :

[batch] Tester l'existence d'un répertoire (a

Dernière réponse le 10 jun 2008 à 15:15:35 mazkime, le 21 sep 2007 à 16:39:00 
 Signaler ce message aux modérateurs

Bonjour à tous.
J'écris un script batch dans lequel j'ai besoin de tester l'existence d'un répertoire. Pour ça, j'utilise la commande "if exist %1\nul" ou %1 est un argument appelé avec mon script (en fait, j'exécute mon script en mode graphique en cliquant sur répertoire sur mon bureau, grâce à l'onglet "ouvrir avec" dans lequel j'ai mis mon script). %1 contient donc le chemin du répertoire sélectionné.

J'ai fait quelques tests : tout se passe très bien quand il n'y a pas d'espaces dans le chemin de mon répertoire, mais s'il y a un espace (ce qui arrive tout le temps pour un répertoire qui se trouve sur mon bureau, puisqu'il y a 'Documents and Settings' dans le chemin...) la valeur retournée par le test est toujours fausse.

Ceci provient du fait, sans doute, que dans ce cas le chemin de mon répertoire est mis entre guillemets "C:\Documents and Settings\etc ..."
J'ai essayé en enlevant les guillemets, en les déplaçant juste autours de "Documents and Settings" mais rien n'y fait, ça ne marche toujours pas.

Quelqu'un aurait-il une solution pour moi ?
Merci

Configuration: Windows XP
Firefox 2.0.0.7

Meilleures réponses pour « [batch] Tester l'existence d'un répertoire (a » dans :
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
[ADSL] Tester la vitesse de connexion internet (test de débit) VoirLes vitesses de téléchargement (théoriques) : Connexions Pourquoi cette différence ? J'ai un ADSL xxxx, mais quand je télécharge ça va moins vite que ce que ça devrait, pourquoi ? L'upload est trop lent ! Liens Tests de débit...
Tests et diagnostics du réseau VoirTester la configuration IP Avant toute chose, il est recommandé de véfier la configuration IP de l'ordinateur. Les systèmes Windows proposent un outil en ligne de commande, appelé ipconfig permettant de connaître la configuration IP de...
Répertoire VoirQu'est-ce qu'un répertoire? Un répertoire (appelé également dossier ou folder en anglais) est un objet informatique pouvant contenir des fichiers. Imaginez une grande commode qui contient des tiroirs dans lesquels pourraient se trouver des...
Tests d'intrusion VoirTests d'intrusion Les tests d'intrusion (en anglais penetration tests, abrégés en pen tests) consiste à éprouver les moyens de protection d'un système d'information en essayant de s'introduire dans le système en situation réelle. On distingue...

1

dubcek, le 21 sep 2007 à 16:42:04

Mettre la variable entre guillemets "%1"

Répondre à dubcek

2

mazkime, le 21 sep 2007 à 17:05:33

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...)

Répondre à mazkime

3

mazkime, le 21 sep 2007 à 18:15:09
  • +1

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 : http://support.microsoft.com/kb/463550/fr

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+

Répondre à mazkime

4

Drallieiv, le 13 déc 2007 à 11:38:59

If exist "C:\TEST TOTO\nul" echo C'est un répertoire

c'est déja mieux

Répondre à Drallieiv

5

mazkime, le 13 déc 2007 à 20:07:20

J'avais déjà testé cette solution, et elle ne marche pas. J'ai finalement gardé la solution Microsoft qui marche très bien.

Répondre à mazkime

6

jb36123, le 7 fév 2008 à 14:53:43
  • +2

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 ...

Répondre à jb36123

7

 stef78, le 10 jun 2008 à 15:15:35

Bonjour à tous,
j'avais la même problématique

le if exist c:\toto\ commande

fonctionne

a plus

Répondre à stef78