Aide au sujet des commandes IF en batch
Résolu
Diamant le Fou
-
Diamant le Fou -
Diamant le Fou -
Bonjour,
J'ai récemment décidé de créer un fichier batch permettant de réunir les divers exécutables de Office en un seul (pour l'épingler à la barre des tâches). En gros, quand je lance le .bat, il me demande d'entrer le numéro correspondant au logiciel que je veux utiliser et ensuite, le lance automatiquement.
Voici le code :
echo off
color 2
:boucle
echo Choix du programme :
echo 1. Word
echo 2. Excel
echo 3. PowerPoint
echo 4. OneNote
echo 5. Outlook
echo 6. Lync
echo 7. Publisher
echo 8. Access
echo 9. InfoPath
set /p programme=Quel programme lancer ?
if "%programme%"== "1" ( start "" "C:\Program Files\Microsoft Office\Office15\WINWORD.EXE" )
if "%programme%"== "2" ( start "" "C:\Program Files\Microsoft Office\Office15\EXCEL.EXE" )
if "%programme%"== "3" ( start "" "C:\Program Files\Microsoft Office\Office15\POWERPNT.EXE" )
if "%programme%"== "4" ( start "" "C:\Program Files\Microsoft Office\Office15\ONENOTE.EXE" )
if "%programme%"== "5" ( start "" "C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE" )
if "%programme%"== "6" ( start "" "C:\Program Files\Microsoft Office\Office15\lync.exe" )
if "%programme%"== "7" ( start "" "C:\Program Files\Microsoft Office\Office15\MSPUB.EXE" )
if "%programme%"== "8" ( start "" "C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE" )
if "%programme%"== "9" ( start "" "C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE" ) else ( cls
echo Ceci n'est pas une donnee correcte
pause
cls
goto boucle )
Tout marche bien, sauf une chose : une fois l'application lancée, il me marque "Ceci n'est pas une donnée correcte", comme si j'avais entré une donnée incompatible. Je ne sais pas comment réparer cette erreur et j'aimerais comprendre comment fonctionne le IF et pourquoi ça ne marche pas.
Merci d'avance pour votre aide. ;)
J'ai récemment décidé de créer un fichier batch permettant de réunir les divers exécutables de Office en un seul (pour l'épingler à la barre des tâches). En gros, quand je lance le .bat, il me demande d'entrer le numéro correspondant au logiciel que je veux utiliser et ensuite, le lance automatiquement.
Voici le code :
echo off
color 2
:boucle
echo Choix du programme :
echo 1. Word
echo 2. Excel
echo 3. PowerPoint
echo 4. OneNote
echo 5. Outlook
echo 6. Lync
echo 7. Publisher
echo 8. Access
echo 9. InfoPath
set /p programme=Quel programme lancer ?
if "%programme%"== "1" ( start "" "C:\Program Files\Microsoft Office\Office15\WINWORD.EXE" )
if "%programme%"== "2" ( start "" "C:\Program Files\Microsoft Office\Office15\EXCEL.EXE" )
if "%programme%"== "3" ( start "" "C:\Program Files\Microsoft Office\Office15\POWERPNT.EXE" )
if "%programme%"== "4" ( start "" "C:\Program Files\Microsoft Office\Office15\ONENOTE.EXE" )
if "%programme%"== "5" ( start "" "C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE" )
if "%programme%"== "6" ( start "" "C:\Program Files\Microsoft Office\Office15\lync.exe" )
if "%programme%"== "7" ( start "" "C:\Program Files\Microsoft Office\Office15\MSPUB.EXE" )
if "%programme%"== "8" ( start "" "C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE" )
if "%programme%"== "9" ( start "" "C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE" ) else ( cls
echo Ceci n'est pas une donnee correcte
pause
cls
goto boucle )
Tout marche bien, sauf une chose : une fois l'application lancée, il me marque "Ceci n'est pas une donnée correcte", comme si j'avais entré une donnée incompatible. Je ne sais pas comment réparer cette erreur et j'aimerais comprendre comment fonctionne le IF et pourquoi ça ne marche pas.
Merci d'avance pour votre aide. ;)
A voir également:
- Aide au sujet des commandes IF en batch
- Invite de commandes - Guide
- Fichier batch - Guide
- Commandes terminal mac - Guide
- Sujet de tfc déjà travaillé en informatique pdf - Forum Bases de données
- Tfc pour systeme informatique de gestion ✓ - Forum Access
2 réponses
Salut,
je crois que le problème vient de la syntaxe que tu utilises.
Tu dois lever les espaces après les "==" des If.
Les syntaxes des commandes Start ne me semblent pas correctes, pour le "" en premier argument.
Le message "Ceci n'est pas une donnee correcte" s'affiche uniquement lorsque la commande entrée n'est pas 9. Quelle que soit la requête, sauf 9, tu auras ce message même si la requête est valide.
Voilà un code qui devrait fonctionner :
En espérant t'avoir aidé,
Quester4
je crois que le problème vient de la syntaxe que tu utilises.
Tu dois lever les espaces après les "==" des If.
Les syntaxes des commandes Start ne me semblent pas correctes, pour le "" en premier argument.
Le message "Ceci n'est pas une donnee correcte" s'affiche uniquement lorsque la commande entrée n'est pas 9. Quelle que soit la requête, sauf 9, tu auras ce message même si la requête est valide.
Voilà un code qui devrait fonctionner :
@echo off color 2 :boucle echo Choix du programme : echo 1. Word echo 2. Excel echo 3. PowerPoint echo 4. OneNote echo 5. Outlook echo 6. Lync echo 7. Publisher echo 8. Access echo 9. InfoPath set /p programme=Quel programme lancer ? if "%programme%"=="1" start "C:\Program Files\Microsoft Office\Office15\WINWORD.EXE" if "%programme%"=="2" start "C:\Program Files\Microsoft Office\Office15\EXCEL.EXE" if "%programme%"=="3" start "C:\Program Files\Microsoft Office\Office15\POWERPNT.EXE" if "%programme%"=="4" start "C:\Program Files\Microsoft Office\Office15\ONENOTE.EXE" if "%programme%"=="5" start "C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE" if "%programme%"=="6" start "C:\Program Files\Microsoft Office\Office15\lync.exe" if "%programme%"=="7" start "C:\Program Files\Microsoft Office\Office15\MSPUB.EXE" if "%programme%"=="8" start "C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE" if "%programme%"=="9" start "C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE" for /l %%a in (1,1,9) do if not "%programme%"=="%%a" set /a %verif%+=1 if "%verif%"=="9" ( echo Ceci n'est pas une donnee correcte pause cls goto boucle )
En espérant t'avoir aidé,
Quester4
Ton code marche mais j'ai trouvé une autre façon entretemps, merci beaucoup pour ton aide.
Voici ma version modifiée du code :
echo off
color 2
:boucle
echo Choix du programme :
echo 1. Word
echo 2. Excel
echo 3. PowerPoint
echo 4. OneNote
echo 5. Outlook
echo 6. Lync
echo 7. Publisher
echo 8. Access
echo 9. InfoPath
set /p programme=Quel programme lancer ?
if "%programme%"== "1" ( start "" "C:\Program Files\Microsoft Office\Office15\WINWORD.EXE"
) else if "%programme%"== "2" ( start "" "C:\Program Files\Microsoft Office\Office15\EXCEL.EXE"
) else if "%programme%"== "3" ( start "" "C:\Program Files\Microsoft Office\Office15\POWERPNT.EXE"
) else if "%programme%"== "4" ( start "" "C:\Program Files\Microsoft Office\Office15\ONENOTE.EXE"
) else if "%programme%"== "5" ( start "" "C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE"
) else if "%programme%"== "6" ( start "" "C:\Program Files\Microsoft Office\Office15\lync.exe"
) else if "%programme%"== "7" ( start "" "C:\Program Files\Microsoft Office\Office15\MSPUB.EXE"
) else if "%programme%"== "8" ( start "" "C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE"
) else if "%programme%"== "9" ( start "" "C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE"
) else ( cls
echo Ceci n'est pas une donnee correcte
pause
cls
goto boucle )
En fait, le problème était que le "else" ne se rapportait qu'à la dernière condition (programme = 9), en remplaçant les "if" par des "else if", le "else" se rapportait à toutes les conditions à la fois.
Merci beaucoup pour ton code qui demande moins de changements que le mien (et qui en plus est plus élégant).
Diamant le Fou
Voici ma version modifiée du code :
echo off
color 2
:boucle
echo Choix du programme :
echo 1. Word
echo 2. Excel
echo 3. PowerPoint
echo 4. OneNote
echo 5. Outlook
echo 6. Lync
echo 7. Publisher
echo 8. Access
echo 9. InfoPath
set /p programme=Quel programme lancer ?
if "%programme%"== "1" ( start "" "C:\Program Files\Microsoft Office\Office15\WINWORD.EXE"
) else if "%programme%"== "2" ( start "" "C:\Program Files\Microsoft Office\Office15\EXCEL.EXE"
) else if "%programme%"== "3" ( start "" "C:\Program Files\Microsoft Office\Office15\POWERPNT.EXE"
) else if "%programme%"== "4" ( start "" "C:\Program Files\Microsoft Office\Office15\ONENOTE.EXE"
) else if "%programme%"== "5" ( start "" "C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE"
) else if "%programme%"== "6" ( start "" "C:\Program Files\Microsoft Office\Office15\lync.exe"
) else if "%programme%"== "7" ( start "" "C:\Program Files\Microsoft Office\Office15\MSPUB.EXE"
) else if "%programme%"== "8" ( start "" "C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE"
) else if "%programme%"== "9" ( start "" "C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE"
) else ( cls
echo Ceci n'est pas une donnee correcte
pause
cls
goto boucle )
En fait, le problème était que le "else" ne se rapportait qu'à la dernière condition (programme = 9), en remplaçant les "if" par des "else if", le "else" se rapportait à toutes les conditions à la fois.
Merci beaucoup pour ton code qui demande moins de changements que le mien (et qui en plus est plus élégant).
Diamant le Fou