IF ? [BATCH] - Shell/Batch - Programmation
Marsh Posté le 28-10-2004 à 13:57:34
bah faut que tu stockes toutes tes etiquettes dans un fichier temporaire, puis tu le lis et si ta variable %choix% y est, tu fais le goto sinon tu revas au debut.
allé, je t'aide : pour mettre tes etiquetes dans un fichier temporaire tu peux faire :
findstr ":" tonfichier.bat > etiq.txt
apres tu parcours le fichier etiq.txt avec un
FOR /F "parametres" %%i in (etiq.txt) do ( ..
je te laisse deviner la suite...
Marsh Posté le 28-10-2004 à 14:05:41
petite rectif, le filtre c'est plutot
findstr "^:" tonfichier.bat > etiq.txt
pour recuperer les ':' qui sont en début de lignes...
sinon tu allais te choper les C: et compagnie...
Marsh Posté le 28-10-2004 à 14:09:40
Ok merci, il n'y a pas une solution plus simple avec un if ?
Marsh Posté le 28-10-2004 à 14:11:20
nop, on peut pas checker si une etiquette existe avec un if :-(
Marsh Posté le 28-10-2004 à 14:19:06
arf, dommage car si j'ai bien compris pour ta solution il faut mettre autant de :label que de findstr "^:" tonfichier.bat > etiq.txt ?
Marsh Posté le 28-10-2004 à 14:38:39
bon, je suis dans un bon jour, alors essaye ceci :
set /p choix=Programme: %
findstr "^:%choix%$" %0.bat >NUL
if ERRORLEVEL 0 goto %choix%
goto debut
Marsh Posté le 28-10-2004 à 16:18:15
ferty a écrit : Ca ne passe pas, merci quand meme |
Tu peux être un peu plus précis ?
Marsh Posté le 28-10-2004 à 16:52:38
autant pour moi, le ERRORLEVEL deconne...mets ça plutot :
findstr "^:%choix%$" %0.bat >temp.txt
for %%i in (temp.txt) do (
set size=%%~zi
)
if %size% EQU 0 goto debut else goto %choix%
Marsh Posté le 28-10-2004 à 17:44:10
non. le temp.txt contient le resultat de la commande findstr...tu n'as pas à t'en preoccuper...
tu peux le deleter dans une etiquette :quit par ex
(donc tu mets comme nom de programme 'quit' ;-) ça
te servira à quiter le .bat qui tourne en boucle)
:quit
del temp.txt
Marsh Posté le 28-10-2004 à 19:31:38
J'ai fait un copier/coller ca ne marche pas, des choses a rajouter ?
Marsh Posté le 28-10-2004 à 19:39:01
bon, je recapitule ton programme entier
Code :
|
voilà, ca devrait marcher là ...mais attention, avec tes commandes :
Code :
|
tu n'est plus dans le repertoire courant pour le prochain programme à lancer !!!
donc je te conseille de sauvegarder le repertoire courant puis d'y revenir apres le lancement de ton programme, ou bien de lancer le programme directement :
Code :
|
Marsh Posté le 28-10-2004 à 20:00:19
alors voila ce que j'ai ecrit
@echo off
ebut
echo.
set /p choix=Programme: %
findstr "^:%choix%$" %starter.bat >temp.txt
for %%i in (temp.txt) do (
set size=%%~zi
)
if %size% EQU 0 goto debut else goto %choix%
Si je tape n'importe quoi ca me renvoie bien a mon goto debut mais si je tape un nom correct il va sur le 1er :label qu'il voit donc ca ne marche pas en gros
Marsh Posté le 28-10-2004 à 11:55:07
Salut!!
J'ai fait un ptit script avec des goto de partout et lorsque l'utilisateur tape le nom d'un programme, le programme ce lance mais si l'utilisateur se trompe j'aimerai que le script se relance.
Voila le programme:
@echo off
ebut
echo.
set /p choix=Programme: %
goto %choix%
vd
:shrink
cd\
c:
cd Program Files
cd DVD Shrink
start /max DVDShrink3.2.exe
goto debut
si par exemple l'utilisateur tape "dv" au lieu de dvd j'aimerai que ca revienne au debut au lieu de fermer la fenetre dos.
Message édité par ferty le 28-10-2004 à 12:06:38