Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Erreur inconnu
Auteur Message
Répondre en citant
Message Erreur inconnu 
Bonjour,
J'ai créé un batch pour faire disparaître un dossier avec le mot de passe dans le batch et une fonction d'auto modification. Seulement depuis que j'ai intégré cette fonction j'ai des erreur lors du changement (que je n'ai pas avec la fonction a part). De plus a chaque changement des espaces inutile sont ajouté au bout des ligne. pourriez vous analyser mon code et peut-être trouver mes erreur? N'hésitez pas aussi si vous avez des amélioration à apporter.

Code:

@set "password"=""
@echo off
title Files Protect
color 9B

if "%password%"=="" goto CREATEMDP
if EXIST "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" goto UNLOCK
if NOT EXIST ghost goto DOSCREATE
goto CHOICE

:CREATEMDP
rem création lors du 1er démmarage ou suite a une suppression de mot de passe
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºEntrez un mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
set/p "pass1=>"
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºComfirmez ce mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
set/p "pass2=>"
if not %pass2%==%pass1% goto RATE
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºPatientez le temps de l'opération.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

echo for /F "skip=1 delims=" %%%%i in (%~nx0) do echo %%%%i^>^>temp2 >temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
echo echo @set "password=%pass1%"^>%~nx0 >>temp.bat
echo for /F "delims=" %%%%i in (temp2) do echo %%%%i^>^>%~nx0 >>temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
call temp.bat
del temp2
del temp.bat

echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºMot de passe enregistr‚s.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
pause
CLS
if EXIST "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" goto UNLOCK
if NOT EXIST ghost goto DOSCREATE
goto CHOICE

:RATE
rem erreur si les 2 mot de passe sont différent lors de la création
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºVous avez mal recopi‚ le mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
pause
CLS
goto CREATEMDP

:DOSCREATE
rem création du dossier qui seras caché
md ghost
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºDossier ghost cr‚‚.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
goto END

:UNLOCK
rem ouverture du dossier caché
SetLocal DisableDelayedExpansion
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºEntrez le mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set "Line2="
For /F %%# In ('"Prompt;$H&For %%# in (1) Do Rem"') Do Set "BS=%%#"
:UNLOCKloop
rem codage trouvé pour cacher la saisi
Set "Key="
For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined Key Set "Key=%%#"
Set "Key=%Key:~-1%"
SetLocal EnableDelayedExpansion
If Not Defined Key Goto UNLOCKend
If %BS%==^%Key% (Set /P "=%BS% %BS%" <Nul
Set "Key="
If Defined Line2 Set "Line2=!Line2:~0,-1!"
) Else Set /P "=*" <Nul
If Not Defined Line2 (EndLocal &Set "Line2=%Key%"
) Else For /F delims^=^ eol^= %%# In ("!Line2!") Do EndLocal &Set "Line2=%%#%Key%"
Goto UNLOCKloop
:UNLOCKend
rem fin du codage trouvé pour cacher la saisi
echo(
if not !Line2!==%password% goto PASSERREUR
attrib -h -s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}"
ren "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" ghost
rem création d'une archive d'ouverture dans le dossier caché
set madate=Ouverture du dossier ghost le %DATE:~0,2%/%DATE:~3,2%/%DATE:~6,4% à %TIME:~0,2%:%TIME:~3,2% par %USERNAME%
set separation=_______________________________________________________________________________________________
echo %separation%>>ghost\archive.txt
echo %madate%>>ghost\archive.txt
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºDossier d‚verrouill‚.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ   
pause
goto End

:PASSERREUR
rem erreur en cas de saisi d'un mauvais mot de passe
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºLe mot de passe est incorrect.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
goto END

:CHOICE
rem menu des différent choix si le dossier est déverrouillé
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºVoulez-vous verrouiller le dossier ghost (O/N). º
echo ºChanger le mot de passe (C) ou le Supprimer (S).º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
set/p "cho=>"
if /i %cho%==c goto CHANGE
if /i %cho%==o goto LOCK
if /i %cho%==n goto END
if /i %cho%==s goto SUPP
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºMauvais choix tapez O pour Verrouiller              º
echo º                    N pour Quitter                  º
echo º                    C pour Changer de mot de passe  º
echo º                 ou S pour Supprimer le mot de passeº
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
pause
CLS
goto CHOICE

:SUPP
rem saisi du mot de passe pour ensuite le supprimer
SetLocal DisableDelayedExpansion
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºEntrez le mot de passe actuel.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set "Line3="
For /F %%# In ('"Prompt;$H&For %%# in (1) Do Rem"') Do Set "BS=%%#"
:SUPPloop
rem codage trouvé pour cacher la saisi
Set "Key="
For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined Key Set "Key=%%#"
Set "Key=%Key:~-1%"
SetLocal EnableDelayedExpansion
If Not Defined Key Goto SUPPend
If %BS%==^%Key% (Set /P "=%BS% %BS%" <Nul
Set "Key="
If Defined Line3 Set "Line3=!Line3:~0,-1!"
) Else Set /P "=*" <Nul
If Not Defined Line3 (EndLocal &Set "Line3=%Key%"
) Else For /F delims^=^ eol^= %%# In ("!Line3!") Do EndLocal &Set "Line3=%%#%Key%"
Goto SUPPloop
:SUPPend
rem fin du codage trouvé pour cacher la saisi
Echo(
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºPatientez le temps de l'opération.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
rem suppression du mot de passe
echo for /F "skip=1 delims=" %%%%i in (%~nx0) do echo %%%%i^>^>temp2 >temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
echo echo @set "password"=""^>%~nx0 >>temp.bat
echo for /F "delims=" %%%%i in (temp2) do echo %%%%i^>^>%~nx0 >>temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
call temp.bat
del temp2
del temp.bat

:CHANGE
rem saisi du mot de passe pour ensuite le changer
SetLocal DisableDelayedExpansion
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºEntrez le mot de passe actuel.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set "Line="
For /F %%# In ('"Prompt;$H&For %%# in (1) Do Rem"') Do Set "BS=%%#"
:CHANGEloop
Set "Key="
For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined Key Set "Key=%%#"
Set "Key=%Key:~-1%"
SetLocal EnableDelayedExpansion
If Not Defined Key Goto CHANGEend
If %BS%==^%Key% (Set /P "=%BS% %BS%" <Nul
Set "Key="
If Defined Line Set "Line=!Line:~0,-1!"
) Else Set /P "=*" <Nul
If Not Defined Line (EndLocal &Set "Line=%Key%"
) Else For /F delims^=^ eol^= %%# In ("!Line!") Do EndLocal &Set "Line=%%#%Key%"
Goto CHANGEloop
:CHANGEend
Echo(
if not !Line!==%password% goto PASSRATE
CLS
rem procédure de changement du mot de passe
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºEntrez le nouveau mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
SET /p "REPONSE=>"
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºComfirmer le mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ   
SET /P "REPONSE2=>"
IF NOT '%REPONSE2%' == '%REPONSE%' GOTO ERREUR
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºPatientez le temps de l'opération.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

echo for /F "skip=1 delims=" %%%%i in (%~nx0) do echo %%%%i^>^>temp2 >temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
echo echo @set "password"="%REPONSE%"^>%~nx0 >>temp.bat
echo for /F "delims=" %%%%i in (temp2) do echo %%%%i^>^>%~nx0 >>temp.bat
echo @PING 127.0.0.1 -n 11 ^>NUL>>temp.bat
call temp.bat
del temp2
del temp.bat
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºMot de passe chang‚.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ   
pause
CLS
GOTO CHOICE

:ERREUR
rem si le mot de passe est mal recopié lors du changement
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºVous avez mal recopi‚ le mot de passe.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
CLS
goto CHOICE

:PASSRATE
rem si le mot de passe saisi est faut lors du changement
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºLe mot de passe est incorrect.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
CLS
goto CHOICE

:LOCK
rem verrouillage du dossier
ren ghost "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}"
attrib +h +s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}"
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºDossier verrouill‚.º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ   
pause
goto END

:END
rem fin :D


Merci d'avance.
Reremoki
EDIT: ajout des remarque et modification apporté sur le conseil de Laddy



Dernière édition par reremoki le Dim 14 Juil 2013 - 01:20; édité 3 fois
Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Erreur inconnu 
Bonjour

Logan si il passe par là se fera un plaisir de regarder ton code
Ne pas oublier de mettre des commentaires dans ton code car la personne qui n est pas habitué aura du mal à te lire


deja pour ceci :


Code:
if %cho%==c goto CHANGE
if %cho%==C goto CHANGE
if %cho%==o goto LOCK
if %cho%==O goto LOCK
if %cho%==n goto END
if %cho%==N goto END
if %cho%==s goto SUPP
if %cho%==S goto SUPP


tu peux mettre ainsi if /i --> permet de ne pas faire de différence entre minuscule et majuscule.

Code:
if /i %cho%==c goto CHANGE
if /i %cho%==o goto LOCK
if /i %cho%==n goto END
if /i %cho%==s goto SUPP
If not defined %cho% goto CHOICE





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message Erreur inconnu 
merci.
Je vais voir pour mettre des commentaire Smile
Reremoki.



Skype
Message Erreur inconnu 


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