Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
mot de passe modifiable
Auteur Message
Répondre en citant
Message mot de passe modifiable 
Bonjour

alors dans un programme j'ai ceci :

Code:

:debut
set affichage=
set choix=
set pass=master
set /a debug = 1
:set
cls
echo.
echo veuillez entrer le mot de passe
echo tapez 0 pour effacer
if %debug% == 0 goto nobug
echo.
echo affichage : "%affichage%"
:nobug
echo.
echo. %affichage%
if "%choix%" == "%pass%" goto step
:choix
CHOICE /C:abcdefghijklmnopqrstuvwxyz0>nul
If "%ERRORLEVEL%"=="27" (set choix=
   set affichage=
   goto set
   )
If "%ERRORLEVEL%"=="26" set choix=%choix%z
If "%ERRORLEVEL%"=="25" set choix=%choix%y
If "%ERRORLEVEL%"=="24" set choix=%choix%x
If "%ERRORLEVEL%"=="23" set choix=%choix%w
If "%ERRORLEVEL%"=="22" set choix=%choix%v
If "%ERRORLEVEL%"=="21" set choix=%choix%u
If "%ERRORLEVEL%"=="20" set choix=%choix%t
If "%ERRORLEVEL%"=="19" set choix=%choix%s
If "%ERRORLEVEL%"=="18" set choix=%choix%r
If "%ERRORLEVEL%"=="17" set choix=%choix%q
If "%ERRORLEVEL%"=="16" set choix=%choix%p
If "%ERRORLEVEL%"=="15" set choix=%choix%o
If "%ERRORLEVEL%"=="14" set choix=%choix%n
If "%ERRORLEVEL%"=="13" set choix=%choix%m
If "%ERRORLEVEL%"=="12" set choix=%choix%l
If "%ERRORLEVEL%"=="11" set choix=%choix%k
If "%ERRORLEVEL%"=="10" set choix=%choix%j
If "%ERRORLEVEL%"=="9" set choix=%choix%i
If "%ERRORLEVEL%"=="8" set choix=%choix%h
If "%ERRORLEVEL%"=="7" set choix=%choix%g
If "%ERRORLEVEL%"=="6" set choix=%choix%f
If "%ERRORLEVEL%"=="5" set choix=%choix%e
If "%ERRORLEVEL%"=="4" set choix=%choix%d
If "%ERRORLEVEL%"=="3" set choix=%choix%c
If "%ERRORLEVEL%"=="2" set choix=%choix%b
If "%ERRORLEVEL%"=="1" set choix=%choix%a
set affichage=%affichage%*
goto set

(se que j'aime avec ce code c'est que quand on écris le mdp il y a des "*" et j'aimerais bien le garder)


et je voudrais que en modifient un fichier qui ce trouvera "C:\User\%username%\AppData\Roaming\SS" le modifier directement dans le batch !

ps: je voudrai aussi savoir avec si avec ce mot de code ou un autre je pourrais mètre 2 mot de passe par exemple là le mot de passe et master et il "goto step" je voudrais si je mes admin que sa fasse "goto admin"

merci beaucoup !



Dernière édition par kashileo le Mer 27 Fév 2013 - 23:30; édité 1 fois
Visiter le site web du posteur Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message mot de passe modifiable 
Salut Smile

Premièrement... Pensez à [CODE]

Voilà qui est fait Smile
Enfin je regarde ton problème Smile
Code:
:debut
set affichage=
set choix=
set pass=master
set /a debug = 1
:set
cls
echo.
echo veuillez entrer le mot de passe
echo tapez 0 pour effacer
if %debug% == 0 goto nobug
echo.
echo affichage : "%affichage%"
:nobug
echo.
echo. %affichage%
if "%choix%" == "%pass%" goto step
:choix
CHOICE /C:abcdefghijklmnopqrstuvwxyz0>nul
If "%ERRORLEVEL%"=="27" (set choix=
set affichage=
goto set
)
If "%ERRORLEVEL%"=="26" set choix=%choix%z
If "%ERRORLEVEL%"=="25" set choix=%choix%y
If "%ERRORLEVEL%"=="24" set choix=%choix%x
If "%ERRORLEVEL%"=="23" set choix=%choix%w
If "%ERRORLEVEL%"=="22" set choix=%choix%v
If "%ERRORLEVEL%"=="21" set choix=%choix%u
If "%ERRORLEVEL%"=="20" set choix=%choix%t
If "%ERRORLEVEL%"=="19" set choix=%choix%s
If "%ERRORLEVEL%"=="18" set choix=%choix%r
If "%ERRORLEVEL%"=="17" set choix=%choix%q
If "%ERRORLEVEL%"=="16" set choix=%choix%p
If "%ERRORLEVEL%"=="15" set choix=%choix%o
If "%ERRORLEVEL%"=="14" set choix=%choix%n
If "%ERRORLEVEL%"=="13" set choix=%choix%m
If "%ERRORLEVEL%"=="12" set choix=%choix%l
If "%ERRORLEVEL%"=="11" set choix=%choix%k
If "%ERRORLEVEL%"=="10" set choix=%choix%j
If "%ERRORLEVEL%"=="9" set choix=%choix%i
If "%ERRORLEVEL%"=="8" set choix=%choix%h
If "%ERRORLEVEL%"=="7" set choix=%choix%g
If "%ERRORLEVEL%"=="6" set choix=%choix%f
If "%ERRORLEVEL%"=="5" set choix=%choix%e
If "%ERRORLEVEL%"=="4" set choix=%choix%d
If "%ERRORLEVEL%"=="3" set choix=%choix%c
If "%ERRORLEVEL%"=="2" set choix=%choix%b
If "%ERRORLEVEL%"=="1" set choix=%choix%a
set affichage=%affichage%*
goto set


J'ai pas tout saisi, c'est avec le Choice que tu veux que l'utilisateur entre un mot de passe ? oO
Essaies directement le set /p :
Code:
:debut
set affichage=
set choix=
set pass=master
:set
cls
echo.
echo veuillez entrer le mot de passe
set /p password=^>
if %password%==%pass% goto :step
if %password%==admin goto :admin

Voilà qui est fait. Ensuite, pour l'enregistrer dans le batch directement ce n'est pas vraiment top à faire, mais c'est faisable. Enfin, y'a mieux quoi.
La meilleure solution est d'avoir un fichier "password.truc"...

Euh, je finirais ma réponse demain car il se fait tard Smile

Cordialement,
ytrezAn




______________________________________________________
Skype
Répondre en citant
Message mot de passe modifiable 
bah en faite c'est votre code et bien mais le seul problème c'est que je veux gardé les "*" quand on écrit le mdp ...



Visiter le site web du posteur Skype
Répondre en citant
Message mot de passe modifiable 
Helo Mr. Green

Comme je t'ais dit sur skype, je te propose -> http://batch.xoo.it/t2975-Crypter-un-mdp-par-des.htm
Même si d'autres ont des cryptage incorporés, toi tu veux juste "caché"...

A toi de voir

Sinon je ne vais pas devancer YtrezAn je le laisse t'expliquer pour changer un mdp en utilisant un fichier externe.

++




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message mot de passe modifiable 
alors c'est bon a l'aide de Logan j'ai pu refaire tous le mdp

Code:

:debut
cls
set "Y=2"
set "X=2"
echo.
echo Mot de passe
batbox /k

:steep
:By Logan (batch.xoo.it)
set /a X=%X%+1
set "coords=%X% %Y%"
if %errorlevel%==13 goto term
if %errorlevel% LSS 32 goto steep
for /f "tokens=* delims=" %%A in ('batbox /a %errorlevel%') DO SET "MDP=%MDP%%%A"
batbox /g %coords% /d "*" /k
goto steep

:term
if %MDP% EQU monmdp goto step
if %MDP% EQU admin goto admin
goto debut
:step
cls
echo.
echo.
echo MOT DE PASSE ACCEPTE
echo.
echo.
echo.
echo.
ping localhost -n 4 > NUL
exit

:admin
cls
echo.
echo admin
pause
exit


voila



Visiter le site web du posteur Skype
Répondre en citant
Message mot de passe modifiable 
Salut Smile

Voilà, maintenant il te reste à conserver le mot de passe si j'ai tout suivi.

Déjà, le "C:\User\%username%\AppData\Roaming\SS", tu peux le remplacer directement par "%appdata%\SS\".
La variable AppData stocke l'emplacement du dossier Roaming, donc pas la peine de passer par tant de variables (d'ailleurs si je me souviens bien c'est UserProfile pour avoir directement le dossier d'utilisateur, sans passer par "C:\Users\".

Donc maintenant, tu souhaites qu'il y ait un mot de passe enregistré directement dans le Batch. Bon, c'est pas le top, ça je l'ai dit plus haut.
Euh, voilà comment tu pourrais faire en stockant dans un fichier externe :
Code:
@echo off
:: [...]
echo %password% > %appdata%\SS\password.zip
::[...]


Tu notes que j'ai mis .zip, c'est juste pour ne pas que n'importe qui ouvre le fichier n'importe comment, en réalité il faut le bloc-notes car c'est juste du texte. L'avantage est que le Batch ignore l'extension. Bon c'est une astuce comme une autre.

Tu peux donc récupérer le mot de passe dans ton Batch :
Code:
::[...]
for /f %%i in (%appdata%\SS\password.zip) do (
if %MDP%==%%i goto step
)

REM Si il y a plusieurs mots de passe, séparés par des ;
for /f "tokens=2,* delims=;" %%a in (%appdata%\SS\password.zip) do (
if %MDP%==%%a goto step
if %MDP%==%%b goto admin
)


Ainsi le fichier externe peut être lu sans soucis, et peut être édité à tout moment depuis un batch (ou depuis le bloc-notes mais faut d'abord trouver l'astuce du zip).




Maintenant, le "vif du sujet", intégrer directement le mot de passe au Batch.
La méthode la plus simple, c'est l'écriture directement dans ton Batch.

Je vais supposer que le mot de passe admin est fixe, ce qui ne laisse qu'un seul mot de passe à enregistrer.
Je reprends un peu une méthode proposée par Darkbatcher et une autre de Stryk :
Code:
@echo off

:: [...]

REM Lecture du mot de passe
for /f "tokens=2 delims=# " %%a in ('type %0 ^| find "::"') do (
  if %MDP%==%%a goto :step
)

REM Suppression de l'ancien mot de passe et stockage du nouveau
:del
for /f "tokens=*" %%a in ('type %0') do (
  echo %%a | Find "::##">nul
  if errorlevel 1 echo %%a>>###
)
set /p mdptS=Nouveau mot de passe :
(echo del %~nx0
echo ren ### %~nx0
echo echo.^>^>%~nx0
echo echo ::# %mdptS%^>^>%~nx0
echo start %~nx0)>Temp.bat
REM A un moment, faire "start Temp.bat" et "exit" pour "mettre a jour" ton Batch


Voilà voilà Smile

Cordialement,
ytrezAn




______________________________________________________
Skype
Répondre en citant
Message mot de passe modifiable 
merci beaucoup pour votre réponse... un peu incompréhensible a vrai dire Sad

en tous cas merci pour votre astuce sur le %appdata% mais je savais pas si cela marché bien Smile la vous m'enlevez au moins 50 lignes de code ! merci Wink

j'aimerais bien si avez le temps un approfondissement de votre réponse !



Visiter le site web du posteur Skype
Répondre en citant
Message mot de passe modifiable 
Bon, voilà déjà pour aujourd'hui les trucs à connaître absolument pour ce que j'ajouterai demain en éditant Smile



Dans tous les cas, il y a une chose très importante : la redirection.
Elle est possible avec les caractères > et >> en fin de ligne.
L'intérêt est simple : tout le contenu renvoyé par une commande est redirigé.
La redirection s'effectue comme ceci :
Code:
commande > fichier

A noter que quand une commande est renvoyée dans un fichier, elle n'est tout simplement pas renvoyée à l'écran de la console : elle est masquée (au prix de quelques dizaines d'octets de mémoire).
Bien sûr, pour masquer une commande, rien de tel que la redirection vers le fichier nul. En fait, le fichier "nul" n'est pas vraiment un fichier, mais plutôt... un "rien".
Aucun fichier ne sera créé ; ceux qui ne connaissent pas grand-chose à la redirection connaissent en général ceci :
Code:
ping localhost -n 5 > nul

Ici, un temps d'attente de 4 secondes (5-1) avec la commande ping, qui ne sera pas affichée grâce à la redirection vers "rien".

A noter que le caractère ">" signifie que le texte va être écrit à la place du texte déjà existant. Equivalent de suppression du fichier pour réécriture.
Par contre, ">>" va écrire à la suite.

L'utilisation majeure de la redirection :
Code:
echo Texte et/ou %Variable% >> fichier.txt

Ce qui va écrire dans le fichier "Texte et/ou %Variable%", sans écrire le "echo" (qui est la commande qui est exécutée).


Maintenant, il reste le For.
Bon, un cours là-dessus est quelque chose d'assez long et pénible, alors je vais essayer de résumer.
Code:
For %%a in (1 2 3 "Bonne journee" r F) do (
echo %%a
)

La commande For signifie "Pour". Dans "For %%a in (valeurs) do (actions)", on a donc "Pour la variable %%a dans les valeurs (...) faire les actions (...)".
C'est assez simple en fait.
Ainsi, à l'écran de la console, tu auras :
Citation:
1
2
3
Bonne journee
r
F

Ensuite, les paramètres de la commande For.

Le premier est le paramètre /F.
Code:
For /f %%a in (fichier.txt) do (...)
For /f %%a in ('commande') do (...)

Ce paramètre permet de lire dans un fichier ou d'exécuter une commande. La lecture dans un fichier se fait ligne par ligne, aussi une lecture du fichier avec un For en mettant comme commande "Echo %%a" est équivalente à un "type fichier.txt".

Note importante : tu remarques que la commande est entre des guillemets de ce type : '...'
Ces guillemets (ou apostrophes) signifient que le "truc" va être exécuté. Si tu mets un fichier avec ces apostrophes, le fichier va être ouvert. Donc il faut les utiliser uniquement pour des commandes.

Le For /F a aussi deux sous-paramètres possibles : tokens et delims.
Tokens signifie Parties, Delims signifie le délimiteur des parties.
On les insère comme ceci :
Code:
For /f "tokens=2 delims=;" %%a in (fichier.txt) do (echo %%a).

Ce code va t'afficher la deuxième partie de chaque ligne du fichier, si les parties sont délimitées par des ;.
Donc :
Citation:
Fichier.txt :
Bonjour;Bonsoir;Salut;Coucou

Résultat dans la console :
Bonsoir


Second paramètre à connaître : le /L.
Code:
For /l %%a in (1,1,80) do (...)

Cette commande est simple, il n'y a que trois valeurs. La première : le départ. La seconde : le pas. La troisième : l'arrivée.
Ce qui signifie que %%a va prendre toutes les valeurs allant de 1 à 80, espacées de 1.


Bon, je finirai ça demain en expliquant les codes que je t'ai donné.




______________________________________________________
Skype
Répondre en citant
Message mot de passe modifiable 
Hum, j'ai un peu de retard sur mon "exposé", j'avais zappé Rolling Eyes
Code:
@echo off
:: [...]
echo %password% > %appdata%\SS\password.zip
::[...]

Ce code-ci, j'ai juste appliqué une redirection, c'est pour l'écriture du mot de passe dans le fichier.

Ensuite, la récupération du mot de passe :
Code:
for /f %%i in (%appdata%\SS\password.zip) do (
  if %MDP%==%%i goto step
)

C'est simple, j'ai utilisé un For, et vu que c'est un /F, il va lire le contenu du fichier entre les parenthèses, ligne par ligne.
Et si le mot de passe entré est égal à celui stocké dans une ligne du fichier, alors le Batch va à :step.
Pour l'autre code, c'est pareil, sauf que j'utilise des paramètres de /F.



Code:
@echo off
 
:: [...]
 
REM Lecture du mot de passe
for /f "tokens=2 delims=#" %%a in ('type %0 ^| find "::"') do (
  if %MDP%==%%a goto :step
)
 
REM Suppression de l'ancien mot de passe et stockage du nouveau
:del
for /f %%a in ('type %0') do (
  echo %%a | Find "::##">nul
  if errorlevel 1 echo %%a>>###
)
set /p mdptS=Nouveau mot de passe :
(echo del %0
echo ren ### %0
echo echo ::#%mdptS%^>^>%0
echo start %0)>Temp.bat
REM A un moment, faire "start Temp.bat" et "exit" pour "mettre a jour" ton Batch

Pour ce code là, la lecture du mot de passe est simple : dans %0 (alias le fichier .bat en cours d'utilisation), le For recherche la ligne "::#motdepasse" et vérifie celui entré.
Bon, sur un gros code, ça peut prendre un peu de temps, d'où un des avantages de la première méthode.

Ensuite, pour stocker ton mot de passe, toutes les lignes ne contenant pas "::#" sont stockées dans le fichier ###.
Ensuite, un nouveau mot de passe est demandé, puis un fichier Temp.bat est créé. Ce fichier va supprimer le .bat d'origine, puis va renommer le fichier ### avec le nom de départ.
Ensuite, Temp.bat va écrire le nouveau mot de passe à la fin du fichier, puis lancer le bat avec le nouveau mot de passe.


Voilà voilà Very Happy

Cordialement,
ytrezAn




______________________________________________________
Skype
Répondre en citant
Message mot de passe modifiable 
Merci beaucoup Razz

je vous remercie pour votre réponse ! je vais essayé sa tout de suite !!



Visiter le site web du posteur Skype
Message mot de passe modifiable 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch