Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1507 connectés 

  FORUM HardWare.fr
  Programmation

  Question pour les pros du fichier *.bat (programmation)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question pour les pros du fichier *.bat (programmation)

n°49975
cjc
Posté le 30-07-2001 à 18:02:40  profilanswer
 

Salut,
Comme j'ai précisé cette question concerne les pros de la programmation
de fichiers avec l'extention *.Bat mais tout un chacun peu y apporter son idée.
 
D'après le schéma suivant comment faire pour passer du lecteur X: au lecteur Y: si aucun cd-rom n'est présent dans le lecteur X: ?
 
 
:GHOSTNO
echo Entrée du repertoire ghost2001,
rem Test de la presence du CD dans le lecteur X:\
rem S'il n'y est pas, passer au lecteur Y:\ automatiquement sans  attendre l'action de l'utilisateur
 
Remarque :
Dans le test, le programme est recherché sur le lecteur X:\, ne trouve rien et se met en attente avec le message "Lecteur pas prêt, Annuler, Réessayer, Echec" .
c'est cette attente que je veux annuler, et passer sur le lecteur suivant.  
En fait c'est comme si au démarrage le Pc test le lecteur A:\ et passe au C:\ s'il n'y pas de disquette dans lecteur.
 
path X:Cd \ghost2k1
ghostpe.exe -rb
echo OFF
 
echo Recherche dans path /L:Y
echo.
path Y:\ghost2k1
ghostpe.exe -rb
goto end
 
J'ai peut-être trop parlé pour une réponse sans doute très facile,  
mais je n'y connais pas grand chose et vous remercie par avance pour votre aide.

mood
Publicité
Posté le 30-07-2001 à 18:02:40  profilanswer
 

n°49976
cjc
Posté le 30-07-2001 à 21:15:13  profilanswer
 

SVP aidez-moi !!!

n°49978
Jubijub
Parce que je le VD bien
Posté le 30-07-2001 à 21:18:49  profilanswer
 

il doit falloir jouer avec les errorlevel...si t'a un errorlevel = à tant, c que le cd y est pas, sinon, c qu'il y est...
 
je me souviens plus la syntaxe des errorlevel, mais le principe, en gros, c que tu lui demande de mettre un flag si il trouve une erreur...et après, t'a qu'a tester la position du flag...


---------------
Jubi Photos : Flickr - 500px
n°49979
Jubijub
Parce que je le VD bien
Posté le 30-07-2001 à 21:21:41  profilanswer
 

http://2dos.homepage.dk/batutil/help/IF_E.HTM#el
 
fait toi plaisir, c une bible du Batch sous dos...
 
en gros :  
 
lancement de ton jeux sur lecteur X
-->activation du test errorlevel
-->si errorlevel = x then launch game sur x
else launch game sur Y


---------------
Jubi Photos : Flickr - 500px
n°49980
avv
Posté le 30-07-2001 à 21:29:21  profilanswer
 

Le plus simple est de faire un test
 
IF EXIST X:\ghost2k1\ghostpe.exe GOTO LABELX
IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
ECHO Message d'erreur  
GOTO END
 
:LabelX
path X:\ghost2k1  
ghostpe.exe -rb  
GOTO END
 
:LabelY
path Y:\ghost2k1  
ghostpe.exe -rb  
GOTO END
 
:END

n°49981
cjc
Posté le 31-07-2001 à 00:10:52  profilanswer
 

Je vous remercie à tous pour votre aide , il est un peu tard mais demain je m'y attache et vous dennerai des nouvelles .
 
A demain.

n°49982
cjc
Posté le 31-07-2001 à 16:23:20  profilanswer
 

Dans le test, le programme est recherché sur le lecteur X:\, ne trouve rien et se met en attente avec le message  
"Lecteur pas prêt, Annuler, Réessayer, Echec" .
 
Comment programmer le passage sur le lecteur Y sans s'arrêter à cette ligne .
 
J'ai bien essayé la commande "errorlevel" mais rien, et je pige rien.
La reponse de AVV fonctionne mais la présence du cd dans le lecteur X:, sinon se foutu message revient.

n°49995
avv
Posté le 31-07-2001 à 16:46:36  profilanswer
 

Tu travailles sous quel OS ?

n°49997
avv
Posté le 31-07-2001 à 16:52:12  profilanswer
 

Je viens de faire le test sur ma bécane et cela fonctionne, j'ai simplement modifier la lettre (X -> E) et pas de problème.
----------------------------------------------
C:\>IF EXIST e:\ghost2k1\ghostpe.exe GOTO LABELX
C:\>IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
C:\>ECHO Message d'erreur
Message d'erreur
C:\>GOTO END
-------------------------------
un dir m'affiche un msg :
C:\>dir e:
The device is not ready.
 
 
Je ne comprends pas très bien pourquoi cela ne fonctionne pas chez toi ?

 

[edtdd]--Message édité par avv--[/edtdd]

n°50488
cjc
Posté le 01-08-2001 à 23:18:44  profilanswer
 

Mon poste a été supprimé du forum, HARWARE et j'ignorais sa présence ICI.
Donc pour AVV,oui ça fonctionne, mais voit ma question en détail
 
La question et en retrait.
 
 
IF EXIST X:\ghost2k1\ghostpe.exe GOTO LABELX
    - Ma question :
    - Comment passer au test suivant AUTOMATIQUEMENT en évitant le message de la ligne qui suit.
 
    - "Lecteur pas prêt, Annuler, Réessayer, Echec"
 
    - Ce message est renvoyer si n'y a pas de CD dans le lecteur X:\ , et je ne veux pas appuyer sur une touche pour continuer.
 
    - Il y aurait bien ERRORLEVEL,j'ai essayé sans succès, comment bien le programmer ?
 
 
IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
GOTO END
 
:LabelX
path X:\ghost2k1  
ghostpe.exe -rb  
GOTO END
 
:LabelY
path Y:\ghost2k1  
ghostpe.exe -rb  
GOTO END
 
:END  
 
A++

mood
Publicité
Posté le 01-08-2001 à 23:18:44  profilanswer
 

n°50502
csuper
Posté le 01-08-2001 à 23:55:01  profilanswer
 

heu...  :sarcastic: t'as essayé d'inverser la logique des test pour éviter la réponse négative...
 
en gros, tu cherche si y'a ghostxx.exe sur X ou Y, donc tu teste l'inverse...ça donnerait :
 
si y'a pas machin sur Y, goto truc
y:\ghost\ghost.exe
 
label :truc:
si y'a pas machin sur X, goto y'a rien
x:\ghost\ghost.exe
 
label :y'a rien:

n°50506
cjc
Posté le 02-08-2001 à 00:50:05  profilanswer
 

J'ai testé mais dans cet ordre le message est toujours renvoyé si le CD n'est pas ds le lecteur X:.
 
:GHOSTNO
IF not EXIST Y:\ghost2001\Ghostpe.exe GOTO LABELX
path Y:\ghost2001  
ghostpe.exe -rb  
GOTO END  
 
:LABELX
If not exist X:\ghost2001\Ghostpe.exe GOTO END
path X:\ghost2001  
ghostpe.exe -rb  
GOTO END
 
:end

n°50515
avv
Posté le 02-08-2001 à 06:48:22  profilanswer
 

Je pense que le batch fonctionne bien !!!!
 
Vérifie que l'application n'est pas configurée pour fonctionné avec le CD SUR LE CD X: !!! ce qui expliquerai : bien que lancé sur le lecteur Y:, la config du prog exige la présence du CD dans X:.

n°50900
tfj57
Posté le 03-08-2001 à 14:41:24  profilanswer
 

D'après mes lointains souvenir, le problème que tu évoques n'est pas évident.
 
En effet, lorsque l'on veut accéder au lecteur de disquette ou au lecteur de Cd sans y introduire de média, on a une erreur fatale avec le fameux message. Malheureusement cela se passe ainsi pour toutes les fonctions Dos.
 
Certains disent qu'il n'y a pas de problèmes, mais j'en doute, il suffit de faire l'essai avec A: sans la disquette ....
 
En explorant les interruptions, j'en ai trouvé une qui ne fait pas l'erreur fatale.
 
Voici un programme CHECKVOL.C, qu'il faut compiler (je l'ai fait en Turbo C, mais il devrait pouvoir être compilé avec n'importe quoi d'autre), qui teste si une lettre de volume est accessible. Il suffit de mettre comme argument la lettre a tester, si tout est ok errorlevel sera 0, sinon il sera à 1.
 
Le batch TEST.BAT sert à illustrer tout cela.
 
J'ai tout testé à travers une fenêtre Dos sous Win98 et en Dos en quittant Windows, tout semble très bien fonctionner.
 
Je vais en profiter pour l'utiliser moi aussi pour mes cd de restaurations !!!
 
A+
------------------------------
 
###### CHECKVOL.C ######
 
#include <dos.h>
#include <ctype.h>
#include <stdlib.h>
 
main()
{
   union REGS RegIn,RegOut;
   struct SREGS RegSeg;
   char Buf[1024];
   int Lecteur;
 
   /* Conversion lettre lecteur en chiffre de 1 a 26 */
   Lecteur=toupper(*_argv[1])-64;
   if (Lecteur<1 || Lecteur>26)
      /* Lecteur invalide */
      exit(1);
 
   /* Appel interruption Dos Get/Set disk serial number */
   /* qui ne fait pas d'erreur fatale si le média n'est pas */
   /* dans le lecteur, je crois que c'est presque la seule !!! */
   segread(&RegSeg);
   RegIn.ah=0x69;
   RegIn.al=0;
   RegIn.bl=Lecteur;
   RegIn.bh=0;
   RegIn.dx=FP_OFF(Buf);
   RegSeg.ds=FP_SEG(Buf);
   int86x(0x21,&RegIn,&RegOut,&RegSeg);
   if (RegOut.x.cflag)
      /* Si fonction a echou‚e, lecteur non valide ou médi non présent */
      exit(1);
   else
      /* Sinon tout est ok */
      exit(0);
}
 
###### Fin de CHECKVOL.C ######
 
------------------------------
 
###### TEST.BAT ######
 
@echo off
 
checkvol %1
if not errorlevel 1 goto suite
 
echo Lecteur non valide ou media non present
goto fin
 
:suite
echo Tout est Ok
 
:fin
 
###### Fin de TEST.BAT ######

 

[edtdd]--Message édité par tfj57--[/edtdd]

n°50981
cjc
Posté le 03-08-2001 à 18:30:14  profilanswer
 

Merci pour ton aide,
Je vais chercher de quoi créer ce programme.
Au fait, il faudra faire appel au programme dans mon fichier Autoexec.bat pour tester la présence d'un eventuel cd.
 C'est ça ?
Je me demande s'il pourra récupérer la valeur du paramètre représentant  le lecteur dans MSCDEX ( /L:X ) pour le test ?
 
C'est très compliqué tout ça.
A++

n°51024
tfj57
Posté le 04-08-2001 à 02:47:50  profilanswer
 

> Je vais chercher de quoi créer ce programme.  
Si tu as des problèmes, je peux t'envoyer l'exécutable.
 
> Au fait, il faudra faire appel au programme
> dans mon fichier Autoexec.bat pour tester
> la présence d'un eventuel cd. C'est ça ?
Oui. Il suffit de mettre dans l'autoexec.bat les commandes
 
checkvol z:
if not errorlevel 1 goto suite  
traitemnent si erreur
:suite
traitement sans erreur
 
> Je me demande s'il pourra récupérer la valeur
> du paramètre représentant  le lecteur
> dans MSCDEX ( /L:X ) pour le test ?
C'est possible, mais ce n'est pas nécessaire car dans ton autoexec.bat tu forces (c'est mieux) la lettre de Cd avec /L:x, donc il suffit d'appeler checkvol z:
 
> C'est très compliqué tout ça.
En Dos ça toujours été compliqué :(
 
A+

n°51032
pascal
Posté le 04-08-2001 à 08:49:16  profilanswer
 

une autre idée, regarde le fonctionnement de la disquette de secours de win98.
 
Y a un utilitaire et un batch pour trouver le lecteur cd et le ram-disque.
 
tu peux même réutiliser le batch sans quasiment le modifier...

n°51062
cjc
Posté le 04-08-2001 à 14:41:17  profilanswer
 

tfj57, Merci pour les détails > Oui, je veux bien pour l'envoi de l'exécutable mail le moi à exomil@meloo.com .
 
Pascal > je vais essayer de comprendre le fonctionnement du Bat de la disquette, mais si tu as la réponse fais en moi part.
 
Merci a vous A++

n°51084
tfj57
Posté le 04-08-2001 à 21:26:12  profilanswer
 

> tfj57, Merci pour les détails > Oui, je veux bien
> pour l'envoi de l'exécutable mail le moi
> à exomil@meloo.com.
 
Ok c'est fait, fais moi savoir si tout fonctionne bien.
 
A+

n°51098
cjc
Posté le 05-08-2001 à 01:10:36  profilanswer
 

Salut, tfj57
Vois ton courrier,
Je n'ai aucune réponse à l'appel du programme.
¨Pourrais-tu m'expliquer l'emplacement exacte et la syntaxe d'appel.
 
A++

n°51099
tfj57
Posté le 05-08-2001 à 01:53:48  profilanswer
 

J'ai bien reçu ton message, et apparemment tu n'a pas compris comment utiliser la commande.
 
Le fichier CHECKDRV.C est le source que tu n'as pas besoin, je l'ai juste envoyé à titre indicatif. Le fichier TEST.BAT est un exemple qu'il fallait regarder pour voir comment j'appelle la commande. Donc sur ta disquette tu n'as besoin QUE de l'exécutable checkdrv.exe.
 
Ci-dessous tu trouveras ton autoexec.bat modifié.
 
Le commande s'utilise comme suit :
 
checkdrv lettre_à_tester
S'il n'y a pas de média, après l'appel de cette commande, il faudra traiter l'errorlevel 1.
 
Exemple pour savoir s'il y a un cd-rom dans x:\
 
checkdrv x:
if errorlevel 1 goto erreur
   instructions si pas d'erreur
:erreur
  instructions dans le cas où il n'y a pas de cd dans le lecteur ou volume x invalide.
 
Voila, ceci est en réponse à ton message.
 
A+
--------------
 
##### DEBUT AUTOEXEC.BAT
 
@echo off
 
echo Verification, presence du media
 
checkdrv x:
if errorlevel 1 goto suite
IF EXIST X:\ghost2k1\ghostpe.exe GOTO LABELX
 
:suite
checkdrv y:
if errorlevel 1 goto erreur  
IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
 
:erreur
ECHO Aucun CD sur les lecteurs
GOTO END
 
:LABELX
path X:\ghost2001
ghostpe.exe -rb
GOTO END
 
:LABELY
path Y:\ghost2001
ghostpe.exe -rb
GOTO END
 
:END
 
##### FIN AUTOEXEC.BAT

 

[edtdd]--Message édité par tfj57--[/edtdd]

n°51140
cjc
Posté le 05-08-2001 à 18:23:04  profilanswer
 

Salut tfj57,
 
Bien,j'ai essayé mais cela ne marche pas.
Mes remarques :
 
CD dans le lecteur Y: le programme se dirige sur l'étiquette SUITE, puis ERREUR
Donc ne trouve pas le CD placé dans sur Y:
 
CD dans le lecteur X: le programme se dirige sur l'étiquette SUITE, puis ERREUR
 
Dans les deux cas les lignes :
 IF EXIST X:\ghost2k1\ghostpe.exe GOTO LABELX
et IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
ne sont pas exécutées et aucun message venant du programme CHECKDRV.EXE ne s'affiche.
 
Une idée ?
 
 
:GHOSTNO
checkdrv X:
if errorlevel 1 goto suite
IF EXIST X:\ghost2k1\ghostpe.exe GOTO LABELX
 
:suite
checkdrv Y:
if errorlevel 1 goto erreur
IF EXIST Y:\ghost2K1\Ghostpe.exe GOTO LABELY
 
:erreur
echo Pas de CD dans les lecteurs
GOTO END
 
A++

n°51155
TheJackal
Posté le 05-08-2001 à 22:19:44  profilanswer
 

bat ? :ouch:  
existe encore...

n°51168
tfj57
Posté le 06-08-2001 à 05:26:27  profilanswer
 

Je t'ai envoyé un nouveau mail.
 
Tiens moi au courant si cette fois tout fonctionne correctement.
 
A+

n°51344
cjc
Posté le 06-08-2001 à 21:06:49  profilanswer
 

tfj57, Bravoooooooooo !
Tout fonctionne super bien , qu'il y ai ou pas de CD sur les lecteurs.
 
Je tiens à te remercier pour ta patience et ton effort.
Super sympa. A+

n°51368
tfj57
Posté le 06-08-2001 à 22:48:45  profilanswer
 

Enfin ça fonctionne !
 
Bonne utilisation.
 
Salut

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Question pour les pros du fichier *.bat (programmation)

 

Sujets relatifs
[JAVA AWT] Ya t'il des pros de AWT dans ce forum ?[php] appeler un fichier
javascript => question bete mais la je seche !Question pour tous !
[ASP] Question à la Con...[Flash] g une question...
[ASP] Uploader un fichierProgrammation 2D pour jeu (DDraw)
Java et PHP votre avis et questionje voudrais debuter en programmation....
Plus de sujets relatifs à : Question pour les pros du fichier *.bat (programmation)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR