[Batch] variable pour un nom de fichier.

variable pour un nom de fichier. [Batch] - Shell/Batch - Programmation

Marsh Posté le 25-06-2003 à 09:40:36    

J'aimerais utiliser du code "générique" dans un batch decrivant un menu sur un CDBOOT. (en fait, c'est pas vraiment du batch, mais un fichier.txt appelé par dougmenu):
 
voilà un bout du code que j'aurais aimé faire fonctionner:  
- %tmp% est le nom du lecteur ramdisk
- %arch% décrit le nom du programme à lancer. Il s'agit d'un fichier exe qui se trouve dans une archive du meme nom.
 

Code :
  1. #if_exist %cddrv%\PART\dm1.CAB
  2. Ontrack Disk Manager 9.57
  3.   set arch=dm1
  4.   goto _gen
  5. #endif
  6. #if_exist %cddrv%\PART\HDDReg.cab
  7. HDD Regenerator 1.31
  8.   set arch=HDDReg
  9.   goto _gen
  10. #endif
  11.   :_gen
  12.   if exist %tmp%\PART\%arch%.cab goto _cab
  13.   if exist %tmp%\PART\ goto _cpy
  14.   mkdir %tmp%\PART
  15.   :_cpy
  16.   echo O | del %tmp%\PART\*.*
  17.   echo Copie des fcihiers sur le ramdisk...
  18.   echo.
  19.   copy %cddrv%\PART\%arch%.cab %tmp%\PART
  20.   :_cab
  21.   extract /y /e /l %tmp%\PART\ %tmp%\PART\%arch%.cab
  22.   del %tmp%\PART\%arch%.cab
  23.   %tmp%\PART\%arch%.exe
  24.   if errorlevel 1 pause
  25.   goto %retour%


 
plusieurs questions:  
1) y a t il un moyen de revenir après un GOTO ? ou une commande plus appropriée que GOTO pour inclure un bout de code?
2) j'ai aussi essayé de copier/coller le code générique dans chacune des parties, et le "set arch" ne semble pas fonctionner. Il me dit en effet "fichier .cab inconnu" Pourquoi ? Ne peut on pas utiliser une variable comme chaine de caractère pour un nom de fichier ?
 
Merci de votre aide.
 
PS: le but est d'intégrer le max d'utilitaire dans le projet CD Boot RestoR lancé par NHiX sur ce forum.


Message édité par Eric B le 25-06-2003 à 20:25:29
Reply

Marsh Posté le 25-06-2003 à 09:40:36   

Reply

Marsh Posté le 25-06-2003 à 10:02:23    

J'ai pas trop regardé ton code, mais je peux répondre à tes questions :
 
pour revenir après un goto : (de tête, à tester)
set retour=retour1
goto xxx
:retour 1
...
...
:goto fin
 
:xxx
...
goto %retour%
 
 
set arch ne fonctionne pas :
tu as tapé :
set arch = dm1 au lieu de
set arch =dm1
 
-> arch contenait " dm1"
 
A+
 
Edit : je viens de tester le retour après goto : ma mémoire est encore bonne.
A+


Message édité par JPA le 25-06-2003 à 10:07:32
Reply

Marsh Posté le 25-06-2003 à 10:45:36    

merci à toi. M'en vais essayer tout ça...
j'avais bien vu un truc ds le genre pour retour, mais je trouvais ça un peu lourd (4 lignes au lieu de 2). Surtout, on est obligé de spécifier un retourN différent à chq fois, non ? alors qu'un retour avec la meme variable m'aurait suffit...
 
ceci ne doit pas marcher:
#if_exist %cddrv%\PART\PRESIZER.CAB
Zeleps Partition Resizer
  set retour=end
  set arch =PRESIZER
  goto _gen
  :end
#endif
#if_exist %cddrv%\PART\PART.CAB
Ranish Partition Manager
  set retour =end
  set arch =PART
  goto _gen
  :end  
#endif
 
mais plutot cela:
#if_exist %cddrv%\PART\PRESIZER.CAB
Zeleps Partition Resizer
  set retour=end1
  set arch =PRESIZER
  goto _gen
  :end1
#endif
#if_exist %cddrv%\PART\PART.CAB
Ranish Partition Manager
  set retour =end2
  set arch =PART
  goto _gen
  :end2  
#endif
 
c'est bien ça ?


Message édité par Eric B le 25-06-2003 à 10:47:42
Reply

Marsh Posté le 25-06-2003 à 10:50:40    

d'ailleurs, le "goto _gen" peut il fonctionner alors qu'il est en dehors de #if...#endif ?

Reply

Marsh Posté le 25-06-2003 à 20:27:59    

bah non, en fait, pas de retour possible apparemment.
Donc obligé de faire ça:
 

Code :
  1. #if_exist %cddrv%\PART\dm1.CAB
  2. Ontrack Disk Manager 9.57
  3.   set arch=dm1
  4.   if exist %tmp%\PART\%arch%.cab goto _cab
  5.   if exist %tmp%\PART\ goto _cpy
  6.   mkdir %tmp%\PART
  7.   :_cpy
  8.   echo O | del %tmp%\PART\*.*
  9.   echo Copie des fcihiers sur le ramdisk...
  10.   echo.
  11.   copy %cddrv%\PART\%arch%.cab %tmp%\PART
  12.   :_cab
  13.   extract /y /e /l %tmp%\PART\ %tmp%\PART\%arch%.cab
  14.   del %tmp%\PART\%arch%.cab
  15.   %tmp%\PART\%arch%.exe
  16.   if errorlevel 1 pause
  17. #endif
  18. #if_exist %cddrv%\PART\HDDReg.cab
  19. HDD Regenerator 1.31
  20.   set arch=HDDReg
  21.   if exist %tmp%\PART\%arch%.cab goto _cab
  22.   if exist %tmp%\PART\ goto _cpy
  23.   mkdir %tmp%\PART
  24.   :_cpy
  25.   echo O | del %tmp%\PART\*.*
  26.   echo Copie des fcihiers sur le ramdisk...
  27.   echo.
  28.   copy %cddrv%\PART\%arch%.cab %tmp%\PART
  29.   :_cab
  30.   extract /y /e /l %tmp%\PART\ %tmp%\PART\%arch%.cab
  31.   del %tmp%\PART\%arch%.cab
  32.   %tmp%\PART\%arch%.exe
  33.   if errorlevel 1 pause
  34. #endif


 
bof, bof.
Autre limitation de dougmenu: pas de sous menu. Une alternative?


Message édité par Eric B le 25-06-2003 à 20:28:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed