OVH Cloud OVH Cloud

WD75 ou WD8 Comment executer un programme MSDOS

26 réponses
Avatar
Georges PEYRE
Bonjour,

Mon problème est certainement dérisoire mais je ne sais comment faire
:/

Je dois executer un programme MSDOS dont la commande MSDOS est celle-ci
:
MonProgDos.exe MonFichier.xxx > Resultat.txt

Le programme dos est MonProgDos
Monfichier.xxx est un paramètre attendu par MonProgDos
Resultat.txt contient le résultat de l'execution de MonProgDos

1) Comment le lancer avec Windev
2) La fenêtre MSDOS ne dois pas s'ouvrir

Merci d'avance

--
Elle est pas belle la vie ?

10 réponses

1 2 3
Avatar
michel.chanu
Bonjour!

J'utilise quelquefois des commandes DOS sous Windev (depuis la version
4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un
fichier batch (.bat) contenant la commande complète, et en exécutant
ce fichier batch.

Si celà peut aider...

Bon dev.
Avatar
STASZEWSKI André
Georges PEYRE wrote:
Val a couché sur son écran :
Assure toi donc que ton programme Windev et ton programme MSDOS sont
dans le même dossier, cela vient peut-être de là aussi.
Fais attention également aux 8 caractères maxi des noms de fichiers
sous MSDOS.

A+

Val



Par rapport au format de la commande passée je n'ai aucun problème
MonProgDos.exe MonFichier.xxx >Resultat.txt

Le programme MponProgDos.exe se passe très bien quelle que soit la
longueur des noms de fichiers à partir du moment ou je lui fourni le
chemin de répertoire du fichier MonFichier.xxx passé en parametre

Non le problème est vraiment dû au fait que l'indirection et le
fichier Resultat.txt ne sont pas pris en compte

D'ailleurs j'ai fait une autre tentative en créant un fichier .bat que
je lance ensuite avec LanceAppli
exemple :
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")

Dans ce cas l'execution se passe correctement :') : le fichier est
bien cree mais je me retrouve alors apres execution avec la fenêtre
MSDOS ouverte qui contient la ligne de commande executée mais je ne
sais alors pas comment fermer la fenêtre avec Windev :/

Cordialement



Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde
shell je pense)...
--
Cordialement,
André STASZEWSKI
Nouvelle version 3.0 de Photo Visu sur www.PlaneteDev.fr.st
Avatar
Georges PEYRE
Bonjour,

STASZEWSKI André avait soumis l'idée :



Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde
shell je pense)...



J'ai bien rajouté EXIT de la façon suivante mais elle ne ferme pas la
fenêtre MSDOS : il y a execution sans erreur

MonProgDos.exe MonFichier.xxx >Resultat.txt
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")

Cordialement

--
Elle est pas belle la vie ?
Avatar
Bruno PROSPERO
"Michel CHANU" a écrit dans le message de
news:
Bonjour!

J'utilise quelquefois des commandes DOS sous Windev (depuis la version
4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un
fichier batch (.bat) contenant la commande complète, et en exécutant
ce fichier batch.

Si celà peut aider...

Bon dev.



Bonjour,

soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la
fenêtre dos)
calc
exit

et la commande windev suivante :
LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")

ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la
fermeture de la calculatrice, la fenêtre dos se ferme.

Cordialement,

Bruno PROSPERO
Indépendant
Avatar
Georges PEYRE
Bonjour

Bruno PROSPERO avait soumis l'idée :
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la
fenêtre dos)
calc
exit

et la commande windev suivante :
LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")

ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la
fermeture de la calculatrice, la fenêtre dos se ferme.




Dans mon exemple cà ne marche pas !

PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")

exit s'xecute bien sans erreur mais ne ferme pas la fen^tre msdos
D'ailleurs si j'execute LANCE.BAT à partir de la ligne de commande du
menu démarrage c'est la même chose : pas de fermeture de la fenêtre
MSDOS

Par contre si j'ouvre d'abord la fen^tre MSDOS et que je tape LANCE le
programme est lancé est la fen^tre MSDOS est alors fermée !

Pourquoi tant de haine !!! :-@

Cordialement

--
Elle est pas belle la vie ?
Avatar
michel.chanu
Bonjour!

Peut-être allons-nous y arriver. Voilà un petit bout de programme que
j'utilise depuis des années sous Windev et qui me permet de savoir si
je suis connecté à un réseau (depuis, il existe un composant plus
pratique).

But: créer un fichier à partir d'une commande DOS permettant de lister
tous les postes connectés en réseau et le lire.

// Environnement NT ou plus
// Création d'un fichier batch (la commande utilisée ne peut pas être
lancée directement)
SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net
view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseaux
existe. Abandon")
FIN
// Le résultat de la commande se trouve dans le fichier "Texte.txt"
SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai)
ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseau
existe. Abandon")
FIN
// Suppression du fichier Batch
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
// Ouverture du fichier résultant
Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt")
// La commande renvoie la liste des postes connectés, si ""
n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai
initialement)
SI Position(Texte,"") <> 0 ALORS
gb_HorsRéseau = Faux
FIN
// Suppression du fichier résultant.
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN

La commande batch s'exécute et se ferme sans que je sois obliger de
faire autre chose que ce qu'il y a d'écrit ci-dessus.

J'espère que celà t'avancera...

Cordialement.
Avatar
Georges PEYRE
Bonjour et merci pour ton aide mais la différence entre ton code et le
mien est que en plus de l'indirection pour créer le fichier
Resultat.txt j'ai également un paramètre à passer au programme
MonProgDos et apparemment cette forme de commande n'est pas compatible
avec DDELance ou LanceAppli


Par contre je ne comprends pas la différence de comportement au niveau
du DOS :

Avec cet exemple ...
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")

Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ...
Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est
correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la
fenêtre MSDOS

Par contre ...

Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu
Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli
c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé
) mais la commande EXIT NE FERME PAS la fenêtre DOS

Pourquoi ?? :/ :/

Cordialement








Michel CHANU vient de nous annoncer :
Bonjour!

Peut-être allons-nous y arriver. Voilà un petit bout de programme que
j'utilise depuis des années sous Windev et qui me permet de savoir si
je suis connecté à un réseau (depuis, il existe un composant plus
pratique).

But: créer un fichier à partir d'une commande DOS permettant de lister
tous les postes connectés en réseau et le lire.

// Environnement NT ou plus
// Création d'un fichier batch (la commande utilisée ne peut pas être
lancée directement)
SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net
view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseaux
existe. Abandon")
FIN
// Le résultat de la commande se trouve dans le fichier "Texte.txt"
SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai)
ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseau
existe. Abandon")
FIN
// Suppression du fichier Batch
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
// Ouverture du fichier résultant
Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt")
// La commande renvoie la liste des postes connectés, si ""
n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai
initialement)
SI Position(Texte,"") <> 0 ALORS
gb_HorsRéseau = Faux
FIN
// Suppression du fichier résultant.
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN

La commande batch s'exécute et se ferme sans que je sois obliger de
faire autre chose que ce qu'il y a d'écrit ci-dessus.

J'espère que celà t'avancera...

Cordialement.



--
Elle est pas belle la vie ?
Avatar
Bertrand
Georges PEYRE a couché sur son écran :
Bonjour et merci pour ton aide mais la différence entre ton code et le mien
est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai
également un paramètre à passer au programme MonProgDos et apparemment cette
forme de commande n'est pas compatible avec DDELance ou LanceAppli


Par contre je ne comprends pas la différence de comportement au niveau du DOS
:

Avec cet exemple ...
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")

Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ...
Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte
( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS

Par contre ...

Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu
Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à
dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la
commande EXIT NE FERME PAS la fenêtre DOS

Pourquoi ?? :/ :/

Cordialement




et si tu fait demarrer/executer et que tu tapes : command /c lance.bat,
ça donne quoi ?
Avatar
Bertrand
>
et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça
donne quoi ?



sorry, ça ne peux pas marcher : il faut mettre
command /C chemin_completlance.bat
Avatar
Bertrand
Bertrand a présenté l'énoncé suivant :

et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça
donne quoi ?



sorry, ça ne peux pas marcher : il faut mettre
command /C chemin_completlance.bat



ou d'ailleurs directement :
command /c chemin_completMonProgDos.exe chemin_completMonFichier.xxx >
chemin_completResultat.txt")
1 2 3