Set /p, goto & prise de tête

Résolu
X.A.N.A. Messages postés 216 Statut Membre -  
boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

en ce moment j'essaye de créer un batch me permettant d'accéder plus rapidement à certains fichiers, voici le code source :

"@echo off

:action
SET /P leave= Commande :

IF "%leave%" == "" echo Saisi une commande &goto:action
IF "%leave:~-1%" == " " echo Saisi une commande &goto:action
IF '%leave:~-1%' == 'notepad' goto:notepad
IF '%leave:~-1%' == 'file' goto:file
IF '%leave:~-1%' == 'docs' goto:docs
IF '%leave:~-1%' == 'foto' goto:foto
IF '%leave:~-1%' == 'music' goto:music
IF '%leave:~-1%' == 'load' goto:load
IF '%leave:~-1%' == 'video' goto:video
IF '%leave:~-1%' == 'lacie' goto:lacie
IF '%leave:~-1%' == 'hdd2' goto:hdd2
IF '%leave:~-1%' == 'hdd' goto:hdd
IF '%leave:~-1%' == 'avira' goto:avira
IF '%leave:~-1%' == 'q' goto:exiton

:notepad
start D:\AltimitOS\notepad.exe
goto :action

:file
start C:\Users\
goto action

:docs
start C:\Users\%user%\Documents
goto action

:foto
start C:\Users\%user%\Pictures
goto action

:music
start C:\Users\%user%\Music
goto action

:load
start C:\Users\%user%l\Downloads
goto action

:video
start C:\Users\%user%l\Videos
goto action

:lacie
start G:\
goto action

:hdd2
start D:\
goto action

:hdd
start C:\
goto action

:avira
start "C:\Program Files\Avira\AntiVir Desktop\avcenter.exe"
goto action

:exiton
"

Le problème c'est que n'importe quelle commande que je fasse elle ouvre le bloc-notes, sauf "" et " " auxquelles je n'ose pas toucher puisqu'elles fonctionnent.
Y -t-il un moyen de régler ce problème ?

J'attends vos réponses, merci d'avance, bonne journée

4 réponses

  1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
     
    Bonjour,
    ne pas se prendre la tête !! ^^

    voici quelques pistes pour rester calme et quelques corrections mineures ..
    - afficher ce que l'on teste avant
    - "espace" après les goto
    - ":" avant les étiquettes
    - suppression de caractères bizzaroïdes !
    genre '%leave:~-1%' remplacé par '%leave%'

    je n'ai pas testé tout, mais les commandes "file" et "q" fonctionnent.. à vous pour la suite!
    A++
    @echo off
    
    :action
    SET /P leave= Commande :
    
    echo vous nous dites "%leave%" ...
    
    IF '%leave%' == 'notepad' goto :notepad
    IF '%leave%' == 'file' goto :file
    IF '%leave%' == 'docs' goto :docs
    IF '%leave%' == 'foto' goto :foto
    IF '%leave%' == 'music' goto :music
    IF '%leave%' == 'load' goto :load
    IF '%leave%' == 'video' goto :video
    IF '%leave%' == 'lacie' goto :lacie
    IF '%leave%' == 'hdd2' goto :hdd2
    IF '%leave%' == 'hdd' goto :hdd
    IF '%leave%' == 'avira' goto :avira
    IF '%leave%' == 'q' goto :exiton
    
    goto :action
    
    :notepad
    start D:\AltimitOS\notepad.exe
    goto :action
    
    :file
    start C:\Users\
    goto :action
    
    :docs
    start C:\Users\%user%\Documents
    goto action
    
    :foto
    start C:\Users\%user%\Pictures
    goto action
    
    :music
    start C:\Users\%user%\Music
    goto action
    
    :load
    start C:\Users\%user%l\Downloads
    goto action
    
    :video
    start C:\Users\%user%l\Videos
    goto action
    
    :lacie
    start G:\
    goto action
    
    :hdd2
    start D:\
    goto action
    
    :hdd
    start C:\
    goto action
    
    :avira
    start "C:\Program Files\Avira\AntiVir Desktop\avcenter.exe"
    goto action
    
    :exiton
    
    1
  2. X.A.N.A. Messages postés 216 Statut Membre 19
     
    Merci je test de suite ;)
    0
  3. X.A.N.A. Messages postés 216 Statut Membre 19
     
    Merci beaucoup boly38 ça fonctionne !!
    Bonne journée à toi, et merci encore une fois :)
    0
  4. X.A.N.A. Messages postés 216 Statut Membre 19
     
    Bon là j'abuse peut-être :$ mais maintenant j'aimerais pouvoir copier des fichiers ou les déplacer à partir de cette commande, tu as une idée de comment faire? j'ai essayé avec des variables mais ça n'a pas fonctionné. Sinon il faudrait que je puisse sortir de la boucle et que je puisse y retourner après, mais il me semble que c'est impossible.
    0
    1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
       
      un exemple pour créer une variable qui comporte un nom de répertoire:
      SET TOTo=C:\TEMP 
      

      pour afficher le contenu de la variable :
      echo %TOTo% 
      

      pour afficher le contenu du répertoire de la variable :
      DIR %TOTo% 
      

      pour copier un fichier (ou plusieurs..) en spécifiant comme cible une variable comportant le répertoire :
      copy toto.txt %TOTo% 
      

      enfin après la copie; pour revenir au menu il suffit de lui spécifier l'étiquette comme pour les autres :
      goto :action 
      

      A++
      0