Set /p, goto & prise de tête

Résolu/Fermé
X.A.N.A. Messages postés 190 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 22 juillet 2013 - 7 juil. 2011 à 11:26
boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 - 11 juil. 2011 à 09:26
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

boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
7 juil. 2011 à 11:50
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
X.A.N.A. Messages postés 190 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 22 juillet 2013 19
7 juil. 2011 à 11:58
Merci je test de suite ;)
0
X.A.N.A. Messages postés 190 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 22 juillet 2013 19
7 juil. 2011 à 12:05
Merci beaucoup boly38 ça fonctionne !!
Bonne journée à toi, et merci encore une fois :)
0
X.A.N.A. Messages postés 190 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 22 juillet 2013 19
10 juil. 2011 à 10:58
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
boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
Modifié par boly38 le 11/07/2011 à 09:27
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