[batch] probleme je sais pas ou

Bonjour,
voila j'ai tenté de créé un petit programme, mais j'ai du faire une erreure quelque part ( je suis débutant ! )

ils me disent : and n'est pas reconnu en tant que commande interne ou externe ...

le source de mon batch est :

@echo off
title cleaner
mode con LINES=55 COLS=125
echo.
echo create by : Sylvain version 1.0
color f1
echo.
echo ================================================================================
echo.
echo.
echo.
echo Menu
echo.
echo.
echo.
echo.
echo Vous taperez :
echo.
echo C: Supprimer les cookies
echo V.C: Vider la corbeille
echo S.H: Supprimer les historiques
echo S.I: Supprimer les "Temporary Internet Files" (doivent etre supprime)
echo All: Tout supprimer
echo A: autres
echo.
echo =================================================================================
echo.
echo.
echo.
echo.
ping 127.0.0.1 -n 02>nul
set /p menu=que voulez-vous faire ?
if "%menu%"=="c" GOTO Suppr.cookies
if "%menu%"=="C" GOTO Suppr.cookies
if "%menu%"=="v.c" GOTO corbeille
if "%menu%"=="V.C" GOTO corbeille
if "%menu%"=="s.h" GOTO Historique
if "%menu%"=="S.H" GOTO Historique
if "%menu%"=="S.I" GOTO Temporary Internet Files
if "%menu%"=="s.i" GOTO Temporary Internet Files
if "%menu%"=="All" GOTO Tout supprimer
if "%menu%"=="ALL" GOTO Tout supprimer
if "%menu%"=="all" GOTO Tout supprimer
if "%menu%"=="A" GOTO autres
if "%menu%"=="a" GOTO autres

:Suppr.cookies
if NOT exist C:\Documents and Settings\Administrateur\Cookies (echo vous n'avez aucun cookies. )
if exist "C:\Documents and Settings\Administrateur\Cookies" del /q C:\Documents and Settings\Administrateur\Cookies
echo.
pause

:corbeille
if NOT exist c:\recycler (echo vous n'avez aucun fichier dans votre corbeille )
if exist "c:\recycler" rmdir /s /q c:\recycler
echo.
pause

:Historique
if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Historique (echo vous n'avez aucun historique. )
if exist "C:\Documents and Settings\Administrateur\Local Settings\Historique" del /q C:\Documents and Settings\Administrateur\Local Settings\Historique
echo.
pause

:Temporary Internet Files
if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files (echo vous n'avez pas de "Temporary Internet Files" )
if exist "C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files" del /q C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files
echo.
pause

:Tout supprimer
if NOT exist C:\Documents and Settings\Administrateur\Cookies (echo vous n'avez aucun cookies. )
if exist "C:\Documents and Settings\Administrateur\Cookies" del /q C:\Documents and Settings\Administrateur\Cookies
if NOT exist c:\recycler (echo vous n'avez aucun fichier dans votre corbeille )
if exist "c:\recycler" rmdir /s /q c:\recycler
if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Historique (echo vous n'avez aucun historique. )
if exist "C:\Documents and Settings\Administrateur\Local Settings\Historique" del /q C:\Documents and Settings\Administrateur\Local Settings\Historique
if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files (echo vous n'avez pas de "Temporary Internet Files" )
if exist "C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files" del /q C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files
echo.
pause

:autres
set /p autres=Voulez vous supprimer vos historiques de conversations MSN ?
if "%autres%"=="oui" rmdir /s /q C:\Documents and Settings\henri\Mes documents\Mes Historiques de Conversation
if "%autres%"=="non" (echo retour )
pause


Voila, si quelqu'un pourrait m'aider se serait sympa !

merci d'avance
Configuration: Windows XP
Internet Explorer 7.0

13 réponses

  1. Bonjour,

    Mets des doubles quotes ("C:\...... and.........") à tes chemins/répertoires, ce sont les espaces qu'il n'aime pas trop !
    1. c bon merci beaucoup, par contre, une fois que je lance par exemple V.C, a la fin, je voudrai qu'il revienne au menu simple ... comment puis-je faire svp ? !
      1. Appelle tes sous-programmes avec un CALL : et termine chaque sous-programme par un GOTO :EOF.
        N'oublie pas les : devant les noms des sous-programmes.--

        Cordialement.

        Cchristian.
        1. oula ... Tu veux bien donner un tout petit exemple ou m'expliquer un peu mieu stp, je suis débutant et je connais pas vraiment :-/
          1. sa donnera par exmple :


            call :corbeille
            if NOT exist c:\recycler (echo vous n'avez aucun fichier dans votre corbeille )
            if exist "c:\recycler" rmdir /s /q c:\recycler
            echo.
            pause
            :EOF


            ???
            1. je pense que c'est tout bon ... Pouvez me dire si il y a des erreurs s'il vous plaît ( je ne peux pas voir moi je suis sur linux pour le moment et ma mere a éteint son PC j'ai pas le droit d'y retourner ...

              @echo off
              title cleaner
              mode con LINES=55 COLS=125
              :menu1
              echo.
              echo create by : Sylvain version 1.0
              color f1
              echo.
              echo.
              echo ================================================================================
              echo.
              echo.
              echo.
              echo Menu
              echo.
              echo.
              echo.
              echo.
              echo Vous taperez :
              echo.
              echo C: Supprimer les cookies
              echo V.C: Vider la corbeille
              echo S.H: Supprimer les historiques
              echo S.I: Supprimer les "Temporary Internet Files" (doivent etre supprime)
              echo All: Tout supprimer
              echo A: autres
              echo.
              echo =================================================================================
              echo.
              echo.
              echo.
              echo.
              ping 127.0.0.1 -n 02>nul
              set /p menu=que voulez-vous faire ?
              if "%menu%"=="c" GOTO Suppr.cookies
              if "%menu%"=="C" GOTO Suppr.cookies
              if "%menu%"=="v.c" GOTO corbeille
              if "%menu%"=="V.C" GOTO corbeille
              if "%menu%"=="s.h" GOTO Historique
              if "%menu%"=="S.H" GOTO Historique
              if "%menu%"=="S.I" GOTO Temporary Internet Files
              if "%menu%"=="s.i" GOTO Temporary Internet Files
              if "%menu%"=="All" GOTO Tout supprimer
              if "%menu%"=="ALL" GOTO Tout supprimer
              if "%menu%"=="all" GOTO Tout supprimer
              if "%menu%"=="A" GOTO autres
              if "%menu%"=="a" GOTO autres

              :Suppr.cookies
              if NOT exist C:\Documents and Settings\Administrateur\Cookies (echo vous n'avez aucun cookies. )
              if exist "C:\Documents and Settings\Administrateur\Cookies" del /q C:\Documents and Settings\Administrateur\Cookies
              echo.
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls

              :corbeille
              if NOT exist c:\recycler (echo vous n'avez aucun fichier dans votre corbeille )
              if exist "c:\recycler" rmdir /s /q c:\recycler
              echo.
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls

              :Historique
              if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Historique (echo vous n'avez aucun historique. )
              if exist "C:\Documents and Settings\Administrateur\Local Settings\Historique" del /q C:\Documents and Settings\Administrateur\Local Settings\Historique
              echo.
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls

              :Temporary Internet Files
              if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files (echo vous n'avez pas de "Temporary Internet Files" )
              if exist "C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files" del /q C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files
              echo.
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls

              :Tout supprimer
              if NOT exist C:\Documents and Settings\Administrateur\Cookies (echo vous n'avez aucun cookies. )
              if exist "C:\Documents and Settings\Administrateur\Cookies" del /q C:\Documents and Settings\Administrateur\Cookies
              if NOT exist c:\recycler (echo vous n'avez aucun fichier dans votre corbeille )
              if exist "c:\recycler" rmdir /s /q c:\recycler
              if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Historique (echo vous n'avez aucun historique. )
              if exist "C:\Documents and Settings\Administrateur\Local Settings\Historique" del /q C:\Documents and Settings\Administrateur\Local Settings\Historique
              if NOT exist C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files (echo vous n'avez pas de "Temporary Internet Files" )
              if exist "C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files" del /q C:\Documents and Settings\Administrateur\Local Settings\Temporary Internet Files
              echo.
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls

              :autres
              set /p autres=Voulez vous supprimer vos historiques de conversations MSN ?
              if "%autres%"=="oui" rmdir /s /q C:\Documents and Settings\henri\Mes documents\Mes Historiques de Conversation
              if "%autres%"=="non" (echo retour )
              :fin set /p menu=pour retourner au menu tapez "m"?
              if "%menu1%"=="m" GOTO menu
              if "%menu1%"=="M" GOTO menu
              if not "%menu1%"=="m" (exit)
              if not "%menu1%"=="M" (exit)
              cls


              merci de bien vouloir me signaler la moindre erreur ...

              Merci d'avance !
              1. REM  Séquence appelante :
                          CALL                :ECRITURE_MATCH. . . . .  . . . . .  .          
                           .................................................... 
                           .................................................... 
                           .................................................... 
                           .................................................... 
                         GOTO                                            :EOF
                
                
                REM  Séquence appelée :
                :ECRITURE_MATCH
                
                        ..........................................
                        .........................................
                
                        GOTO                                            :EOF

                1. Dans un fichier .bat un ordre GOTO :EOF lorsqu'il termine une séquence d'ordres appelée par un CALL (donc un sous-programme), a pour effet de rebrancher l'exécution sur l'ordre qui suit immédiatement le CALL.
                  Lorsque cet ordre GO TO :EOF se trouve dans la séquence principale il occasionne l'arrêt du traitement.

                  C'est classique en programmation structurée, il y a toujours un ordre (ou une convention d'écriture, ici c'est l'ordre GOTO :EOF présent dans d'un sous-programme ) qui formalise la fin d'un sous-programme ou d'une procédure ou d'une fonction ou ......... (par exemple en C c'est l'ordre RETURN) et qui a pour effet de "rebrancher" la logique d'exécution à l'instruction, l'ordre, qui suit immédiatement l'ordre d'appel (ici c'est le CALL)
                  1. Complément d'informations ( Doc en ligne HELP CALL dans la ligne de l'invite de commande):

                    Si les extensions de commandes sont activées, CALL est modifié comme suit :
                    La commande CALL accepte maintenant des étiquettes comme cible de CALL. La
                    syntaxe est :

                    CALL :étiquette arguments

                    Un nouveau contexte de fichier de commandes est créé avec les arguments
                    spécifiés et le contrôle est transmis à la commande suivant l'étiquette
                    spécifiée. Vous devez "quitter" deux fois en atteignant la fin du script du
                    fichier de commandes deux fois. La première fois que vous lisez la fin, le
                    contrôle reviendra juste après la commande CALL. La seconde fois vous
                    quitterez le script de commandes. Entrez GOTO /? pour une description de
                    l'extension GOTO :EOF qui vous permettra de "retourner" en dehors d'un script
                    LIMPIDE !!!!

                    Pour activer l'extension des commandes, insérer en début du fichier .bat la commande :
                    SETLOCAL ENABLEextensions

                    Cordialement.

                    Cchristian.
                    1. re-bonjour, j'ai trouvé un façon plus simlifié ( pour moi de la faire ) mais je voudrais effacer un truc que j'arrive pas :/ je m'explique...

                      j'ai mon menu :

                      @echo off
                      :menu1
                      echo.
                      echo sa c le menu

                      et j'ai mon truc pour revenir au menu :
                      set /p menu=pour retourner au menu tapez "m"?
                      if "%menu%"=="m" GOTO menu1
                      if "%menu%"=="M" GOTO menu1
                      if not exist "%menu%"=="m" (exit)
                      if not exist "%menu%"=="M" (exit)

                      mais le probleme, c que je voudrai un faire un "cls" pour enlever mon menu sinon j'en ai deux ... mais je ne sais pas ou il faut le placer !

                      aidez moi svp, c la touche final de mon batch !
                      1. c bon ! j'ai placé mon "cls" apres ( tout au debut ) :menu1 et c'est bon ! !

                        Je l'ai mis en téléchargement pour ceux a qui sa plaît d'avoir un tout petit programme tout léger

                        http://rapidshare.de/files/39558271/Claner.exe.html

                        et merci a tout ceux qui 'mont aider et surtout a toi christian !

                        merci beaucoup !