{batch} IF NOT EXIST <mon folder> ne fonctionne pas

Résolu/Fermé
Tinouboom Messages postés 11 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 19 juin 2017 - Modifié le 13 juin 2017 à 11:01
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 13 juin 2017 à 15:24
Bonjour à tous

Alors voilà, je veux demander à l'utilisateur d'indiquer le chemin menant au dossier d'installation d'OpenVPN (avec un chemin par défaut - cf code). Seulement, lorsque j'ai rajouter les "if" pour catch d'éventuelles erreurs, ça ne fonctionne plus, le programme se redirige constamment vers :erreur_chemin1 puis la console se ferme à la deuxième tentative (j'ai pensé que ça venait des guillemets à cause des espaces mais j'ai tout testé, rien n'y fait :) )

Merci de votre aide.

@echo off

REM L'utilisateur indique le chemin du dossier d'installation d'OpenVPN
:chemin
set /p chemin=Indiquez entre guillemets le chemin complet du dossier d'OpenVPN [par defaut (appuyez sur Entree) "C:\Program Files (*86)\OpenVPN"]:
echo.
if "%chemin%"=="" (
set chemin="C:\Program Files (*86)\OpenVPN"
)
IF NOT EXIST %chemin%\nul (
GOTO :erreur_chemin1
)
IF NOT EXIST %chemin%\easy-rsa\nul (
GOTO :erreur_chemin2
)
cd %chemin%
GOTO :choix

:erreur_chemin1
cls
echo ### Le chemin %chemin% n'est pas valide. Verifiez les espaces et les guillemets ###
echo.
set "%chemin%"==""
GOTO :chemin

:erreur_chemin2
cls
echo ### Le chemin %chemin% n'est pas le bon ###
echo.
set "%chemin%"==""
GOTO :chemin

:choix
echo Si vous voulez creer ou configurer votre serveur OpenVPN (ONLY ONCE), tapez 1 et appuyez sur Entree

3 réponses

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 13 juin 2017 à 12:24
Bonjour,

Quand tu utilises set pour définir une variable, il ne faut mettre qu'un seul signe = et il ne faut pas mettre les %%
set chemin=""

Moi à ta place je ne mettrais même pas les ""
set chemin=


Concernant le "if exist" il ne faut pas mettre nul, tu mets juste le dossier.

“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
0
Tinouboom Messages postés 11 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 19 juin 2017
13 juin 2017 à 14:05
Bonjour,

Merci de ta réponse si rapide. Effectivement, une petite erreur d'inattention. Cependant, la gestion d'erreur ne fonctionne toujours pas.
Ce qu'il faudrait c'est vérifier si le dossier <easy-rsa> se trouve bien dans le dossier indiqué par l'utilisateur (je pense que :erreur_chemin1 est inutile en fin de compte car inclus dans :erreur_chemin2), sauf que même la valeur par défaut ne fonctionne pas et redirige vers :erreur_chemin2.
Une idée ?

REM L'utilisateur indique le chemin du dossier d'installation d'OpenVPN
:chemin
set /p chemin=Indiquez entre guillemets le chemin complet du dossier d'OpenVPN [par defaut (appuyez sur Entree) "C:\Program Files (*86)\OpenVPN"]:
echo.
if "%chemin%"=="" (
set chemin="C:\Program Files (*86)\OpenVPN"
)
REM IF NOT EXIST %chemin% ( ###inutile###
REM GOTO :erreur_chemin1
REM )

IF NOT EXIST %chemin%\easy-rsa (
GOTO :erreur_chemin2
)

cd %chemin%
GOTO :choix

REM :erreur_chemin1
REM cls
REM echo ### Le chemin %chemin% n'est pas valide. Verifiez les espaces et les guillemets ###
REM echo.
REM set chemin=
REM GOTO :chemin

:erreur_chemin2
cls
echo ### Le chemin %chemin% n'est pas le bon ###
echo.
set chemin=
GOTO :chemin
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > Tinouboom Messages postés 11 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 19 juin 2017
Modifié le 13 juin 2017 à 14:13
Quand tu postes du code, il faut utiliser les balises de coloration syntaxique.

Concernant ton problème, essaie comme ça :
set chemin="%ProgramFiles%\OpenVPN" 
0