Ma variable ne marche pas

Fermé
Ungwe Messages postés 1 Date d'inscription mercredi 5 février 2014 Statut Membre Dernière intervention 29 juillet 2014 - 29 juil. 2014 à 12:55
zephir666 Messages postés 107 Date d'inscription dimanche 26 mai 2013 Statut Membre Dernière intervention 23 décembre 2021 - 2 nov. 2015 à 14:16
Bonjour,
Je programme depuis un certain temps en batch et ça fait deux fois que je rencontre le même problème.
J'ai fais un script pour cacher un dossier sur code. Ainsi, on peut déverrouiller le dossier en le rendant visible et le verrouiller en le rendant invisible.
Voici donc le goto pour déverrouiller:

:OUVERTURE
echo Ouverture du dossier.
ping localhost -n 1 > nul
echo.
echo Code d'acces requis.
set/p "pass=>"
if NOT %pass%== %code% goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" GreyGab
echo Dossier deverouille.
ping localhost -n 2 > nul
exit

Et voici le goto qui permet de choisir son code lors de la création du dossier:

:DEUX
echo.
set/p code= Entrer le code d'acces:
cls
ping localhost -n 1 > nul
echo Le code est %code% .
echo.
ping localhost -n 1 > nul
echo Valider la saisie? (O/N)
set/p "choun=>"
if %choun%==O goto TROIS
if %choun%==N goto DEUX
echo. Saisie non valable.
goto DEUX

Au début, j'étais vraiment super contente car cela marchait /o/ Et quand je me suis trompée de code, ça marchait aussi. Donc j'ai compris que c'était inutile.

En fait, le code choisis au début du script ne rentre pas en compte pendant l'ouverture :/ Et j'ai essayé pas mal de trucs bizarres, mais je n'y arrive pas. ;_;

Voici le script entier:
@ECHO OFF
color F0
cls
:GIRAFE
title GreyGab
echo. Bienvenue.
ping localhost -n 1 > nul
goto KIKI
:KIKI
echo.
echo. Acceder au menu? (O/N)
set/p "chotrois=>"
if %chotrois%==O goto OPTION
if %chotrois%==N goto CHAT
echo. Mauvaise saisie.
goto KIKI
:CHAT
cls
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto OUVERTURE
if NOT EXIST GreyGab goto MDLOCKER
:CONFIRM
color F6
echo Verrouillage du dossier.
ping localhost -n 1 > nul
echo.
echo Verrouiller? (O/N)
set/p "cho=>"
if %cho%==O goto LOCK
if %cho%==N goto END
echo. Mauvaise saisie.
ping localhost -n 2 > nul
goto CONFIRM
:LOCK
color F6
ren GreyGab "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Dossier verouille.
ping localhost -n 2 > nul
exit
:OUVERTURE
echo Ouverture du dossier.
ping localhost -n 1 > nul
echo.
echo Code d'acces requis.
set/p "pass=>"
if NOT %pass%== %codeg% goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" GreyGab
echo Dossier deverouille.
ping localhost -n 2 > nul
exit
:FAIL
echo Mot de passe invalide.
ping localhost -n 2 > nul
exit
:MDLOCKER
cls
md GreyGab
echo Le dossier GreyGab a ete cree.
ping localhost -n 2 > nul.
cls
echo. Definition du code d'acces au dossier. Attention, il ne doit contenir aucun accent ou caractere speciaux.
goto DEUX
:DEUX
echo.
set/p code= Entrer le code d'acces:
cls
ping localhost -n 1 > nul
echo Le code est %code% .
echo.
ping localhost -n 1 > nul
echo Valider la saisie? (O/N)
set/p "choun=>"
if %choun%==O goto TROIS
if %choun%==N goto DEUX
echo. Saisie non valable.
goto DEUX
:TROIS
echo. Le code d'acces est %code%
ping localhost -n1 > nul
goto CINQ
:CINQ
cls
echo.
echo Creation du dossier terminee.
ping localhost -n 2 > nul
cls
echo. Pour ouvrir ou verrouiller le dossier, ce programme est requis.
echo. L'ouvrir pour chaque ouverture ou verrouillage.
ping localhost -n 4 > nul
exit
:END
exit


Merci d'avoir lu ce pavé, et je sais, honte à moi pour les noms de goto.

1 réponse

zephir666 Messages postés 107 Date d'inscription dimanche 26 mai 2013 Statut Membre Dernière intervention 23 décembre 2021 10
2 nov. 2015 à 14:16
salut a toi
en faite le problème que tu rencontre est que le batch m'enregistre la variable %code% que lors de son utilisation,
une fois le programme fermé puis ré-ouvert la variable %code% et null (soit vide).

pour pouvoir faire un System de mdp tu est obliger d'avoir ton mdp écrie dans le code ou d'aller le cherché dans un fichier .txt

un exemple tout bete est tres simple de mdp:


@echo off
:mdp
cls
veiller entre votre mots de pass:

set /p mdp=

if %mdp% equ acces goto menu
if %mdp% neq acces goto pass
if not defined %mdp% goto pass

:menu
cls
echo mots de passe correct!
pause>nul
goto mdp

:pass
cls
echo fail!
echo retry again
pause>nul
goto mdp


voila vite fait ce que tu peux faire ou arrangé a ta convenance
0