Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| lancer un fichier bath avec execute? | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: lancer un fichier bath avec execute? Jeu 17 Jan 2013 - 22:45 | |
| Voici le moyen d'exécuter un raccourci placé sur le bureau: - Code:
-
dim d$, p$ d$ = "C:\Documents and Settings\Klaus\Bureau\" p$ = "menu.lnk" execute "cmd /c "+chr$(34)+d$+p$+chr$(34) end Dans mon exemple, j'ai un raccourci sur le bureau qui s'appelle "menu". Le ".lnk" n'est normalement pas affiché mais est toujours présent dans le cas d'un raccourci. Cela ouvri brièvement une fenêtre Dos, lance le programme DANS LE BON REPERTOIRE, puis ferme la fenêtre Dos. Le raccourci peut être placé dans n'importe quel dossier, pas juste sur le nureau. Il faut alors adapter le chemin vers le raccourci. Et via VBScript, il y a des moyens pour lancer un programme sans la fenêtre dos... Donc, si ti arrives à faire ta compilation en cliquant sur un fichier, lance ce fichier de la manière indiquée ci-dessus, et ça devrait marcher. | |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Jeu 17 Jan 2013 - 23:39 | |
| Je te remercie. Je crois que j'y suis arrivé. Je dis 'je crois', car plusieurs fois je dis que c'est ok, et les fois suivantes ça ne marche plus. Le fichier bat que j'ai fais: (en étant bien entendu qu'un raccourcis a été fait sur les fichier dpr, pour qu'ils s'exécutent avec le programme DCC32.exe de Delphi: - Citation :
- @ECHO OFF
cd c:\delphi7\sources7\teste3 project2.dpr enregistré comme 'C:\compile.bat' cd pour changer de répertoire (celui du fichier dpr qui est dans teste3), et project2.dpr pour lancer la compilation qui se fait en arrière plan avec DCC32.exe (le raccourcis pour les fichier dpr) et le programme: - Code:
-
execute "c:\compile.bat" Cette fois-ci il m'a fait la compile, sans le fichier dcu, ni le fichier res. Seulement avec Project2.cfg, Project2.dpr, Unit1.pas et Unit1.dfm Je viens de retirer Project2.cfg, et ça marche aussi. Merci pour ton intervention. Maintenant c'est à moi de travailler! Voila ce que l'essai donne: - Spoiler:
Par contre,je constate qu'en retirant le fichier cfg, il n'y a plus le fichier dcu. Bon à savoir. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 0:01 | |
| Eh bien, c'est super. La persévérance paie toujours ! | |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 0:28 | |
| Merci pour ta réaction. Je viens seulement de voir ton post de 22h45. désolé. Bonne nuit.
Dernière édition par cosmos70 le Ven 18 Jan 2013 - 9:21, édité 1 fois |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 8:36 | |
| Bonjour, Pour ce programme, j'ai mis @ECHO OFF, mais j'aurai aimé savoir si il y a une commande qui permettrait de sauvegardé le texte de la fenêtre dans un fichier log. En mettant @ECHO ON, et à la fin PAUSE, je peux voir le rapport, mais j'aurai préféré avoir un fichier que j'aurai besoin d'aller voir que lorsque le fichier exe n'est pas généré. |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 9:48 | |
| Je ne pense pas qu'il soit possible de récupérer la sortie d'un programme avec Panoramic. On pourrait faire une petite DLL en FreeBASIC, en utilisant l'instruction OPEN PIPE : - Code:
-
' -------------------------------------------------------------- ' DLL pour lancer un programme depuis Panoramic ' et recuperer le resultat dans une variable chaine ' -------------------------------------------------------------- ' Sauvegarder dans runprog.bas ' Compiler par : fbc runprog.bas -dll ' --------------------------------------------------------------
extern "Windows-MS"
const CRLF = chr(10) + chr(13)
function RunProg(byref Prog as zstring ptr, _ byref Result as zstring ptr) as integer export
dim as string s dim as string res = "" dim as integer ff = freefile
open pipe *Prog for input as #ff
do line input #ff, s res = res + s if eof(ff) then exit do else res = res + CRLF loop
close #ff *Result = res return len(res) end function
end extern
Appel par Panoramic : - Code:
-
dll_on "runprog.dll"
dim prog$, result$, i%
' programme a executer prog$ = "dir"
' Dimensionner la chaine de resultat a une taille suffisante result$ = string$(1000, " ")
' Appel de la DLL i% = dll_call2("RunProg", adr(prog$), adr(result$))
' Ecrire le resultat print result$
' Ecrire le nombre de caracteres lus print i%
dll_off
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 9:59 | |
| Tu peux utiliser une pipe. Exemple: dir > x.txt effectue bien la commande dir, mais place la sortie dans le fichier x.txt. Ce fichier est créé automatiquement, et écrase un fichier x.txt éventuellement déjà présent.
Si tu veux ajouter du texte derrière du texte existant dans un fichier log, tu fais ceci: dir >> x.txt le résultat est alors collé à la fin du fichier x.txt.
Tu peux utiliser cette construction pour un fichier *.BAT entier. Supposons que tu as un fichier compil.bat, tu faus compil > compil.log
En en Panoramic, tu fais EXECUTE "cmd /c compil.bat > compil.log"
Et voilà... | |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 10:26 | |
| Bonjour, Dir, n'est pas ce que je veux. Je voudrais voir le rapport de la compilation. Car il détecte des erreurs, vu qu'il manque des fichiers. Seulement le programme fait tout de même la compile. Je remets le programme bat que j'execute, modifié, ensuite le rapport ms_dos que j'ai copié. - Code:
-
@ECHO ON cd c:\delphi7\sources7\teste3 project2.dpr compile > erreur.log pause et le rapport: - Citation :
C:\PANO\temp>cd c:\delphi7\sources7\teste3
c:\DELPHI7\SOURCES7\teste3>project2.dpr Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation C:\DELPHI7\SOURCES7\teste3\Unit1.pas(7) Avertissement: L'unité 'ShellCtrls' est propre à une plate-forme C:\DELPHI7\SOURCES7\teste3\Unit1.pas(36) C:\DELPHI7\SOURCES7\teste3\Project2.dpr(7) Avertissement: Fichier non trouvé : 'Project2.res' C:\DELPHI7\SOURCES7\teste3\Project2.dpr(14) Erreur: Fichier non trouvé : 'Project2.res'
c:\DELPHI7\SOURCES7\teste3>compile 1>erreur.log 'compile' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
c:\DELPHI7\SOURCES7\teste3>pause Appuyez sur une touche pour continuer... Donc, c'est cet écran que je voudrais sauvegarder, et aller le voir que si ça ne compile pas du tout. Je répète: malgré le rapport d'erreur, le programme est compilé ici, donc dans un cas général, il ne m'intéresse pas de le regarder. Il n'y a que dans le cas que la compilation n'est pas faite, que je pourrais aller voir le rapport d'erreur. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 10:52 | |
| Je n'ai mis la commande DIR que comme exemple, bien entendu. La construction "> fichier_log.txt" ou ">> fichier_log.txt" marche après n'importe quelle commande dans un fichier BAT.
Et cela doit marcher aussi à l'intérieur de la commande EXECUTE tel que je l'ai dit dans mon post précédent. Si tu fais cela, tu as tout dans le fichier log, y compris le prompt et le texte des commandes exécutées, et les sorties des programmes, bien sûr.
Supposons que ton fichier batch s'appelle test.bat, tu le lances en Panoramic comme ceci: EXECUTE "cmd /c test.bat > log_de_test.log"
C'est aussi simple que ça.
| |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 11:54 | |
| La commande que j'ai modifié est la suivante: - Code:
-
EXECUTE "cmd /c c:\compile.bat > erreur.log" Si je ne mets pas c:\ devant il ne se passe rien. La compilation se fait tel que je l'ai mis, mais pas de fichier log. J'ai fait une recherche complète du disque C, mais rien. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 12:19 | |
| Le fichier log se crée dans le dossier par défaut. Et si tu fais: - Citation :
- EXECUTE "cmd /c c:\compile.bat > c:\ erreur.log"
Chez moi, j'exécute de petit programme dans son dossier par défaut: - Code:
-
file_open_write 1,"x1.bat" file_writeln 1,"dir" file_writeln 1,"path" file_close 1 execute "cmd /c x1.bat > x1.log" end
et dans ce dossier, il produit ce fichier log (j'ai supprime le milieu car il est long): - Code:
-
C:\Documents and Settings\Klaus\Mes documents\Mes projets Delphi\KGF>dir Le volume dans le lecteur C n'a pas de nom. Le num‚ro de s‚rie du volume est 0478-7D1C
R‚pertoire de C:\Documents and Settings\Klaus\Mes documents\Mes projets Delphi\KGF
18/01/2013 12:16 <REP> . 18/01/2013 12:16 <REP> .. 13/08/2012 08:10 213 Afficher_version_de_KGF.bak 13/08/2012 08:21 336 Afficher_version_de_KGF.bas 12/01/2013 14:12 432 AutoItScriptTemp.au3 28/12/2012 22:50 386 AutoIt_test.cfg ... 16/01/2013 13:20 52ÿ343 zlibpas.dcu 27/07/2006 02:32 4ÿ535 zlibpas.pas 247 fichier(s) 36ÿ987ÿ758 octets 12 R‚p(s) 72ÿ291ÿ516ÿ416 octets libres
C:\Documents and Settings\Klaus\Mes documents\Mes projets Delphi\KGF>path PATH=C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\Program Files\CheckPoint\fde;C:\PROGRA~1\Borland\Delphi6\Bin;C:\PROGRA~1\Borland\Delphi6\Projects\Bpl;C:\Program Files\RemObjects Software\Everwood\Bin;C:\windows\system32\WindowsPowerShell\v1.0;C:\Program Files\Samsung\Samsung PC Studio 3\;C:\Program Files\Precision\pdScript;C:\FPC\2.6.0\bin\i386-Win32
Comme tu vois à la lecture du prompt de Dos, le fichier se crée bien dans de dossier par défaut. | |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 13:40 | |
| Merci, mais il se passe rien. Peut-être y a-t-il eu des modifications sur cette fenêtre de remplacement de Ms-Dos de XP. Peut-être aussi, faudrait une commande de sauvegarde de erreur.log. J'ai constaté que la fenêtre est vide, ce qui veut dire que l'écran est envoyé ailleur, mais je ne le retrouve pas.
De toute façon, ce que je demande est du luxe, et ce n'est pas le principale. Ce que je voulais vraiment, je l'ai obtenu. Je peux très bien faire un deuxième fichier bat, en mettant @ECHO ON et pause. Si le fichier ne compile pas, je lance le 2ème pour voir les commentaires. De toute façon, si il y a un problème, le mieux est de r'ouvrir les fichiers avec Delphi, pour suivre le problème à la compilation. J'avais pensé à cela cette nuit, et comme je suis curieux, je n'ai pas pu m’empêcher de poser la question. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 13:46 | |
| | |
| | | Invité Invité
| Sujet: Re: lancer un fichier bath avec execute? Ven 18 Jan 2013 - 19:01 | |
| Merci papydall. J'avais déjà jeté un oeil sur le lien que tu avais déjà donné. De toute façon, ce n'est pas important. Cela me paraissait ainsi au départ, surtout avec la curiosité de voir ce que ça donne. Mais une analyse plus poussé me faire dire que c'est du superflu. On peut avoir une bonne idée au départ, et s'apercevoir ensuite que ce n'est qu'une mèche mouillé.
Par dépit j'ai regardé les commandes Ms-Dos, je n'ai pas vu quelque chose qui marche, mais j'ai perdu trop de temps pour ne rien faire. Si quelqu'un m'apporte quelque chose qui marche sur W7, je regarde, mais ça peut servir à quelqu'un d'autre.
Beaucoup comme moi, ne sommes pas habitué à ces commandes, mais ce qui a été présenté ici, peut aidé quelqu'un d'autre à mieux comprendre le principe. En tout cas, tel que présenté pour remplacé le clic (double-clic selon les préférences) d'un fichier dont l'extension est programmé pour fonctionné avec un programme particulier, il suffit de regardé le post pour voir comment faire, et ça marche. Donc la démarche n'a pas été inutile par moi, et peut servir aux autres. @+ En relisant il semble qu'il y ait du rabachage! Et bien tant pis, cela reste ainsi. |
| | | Contenu sponsorisé
| Sujet: Re: lancer un fichier bath avec execute? | |
| |
| | | | lancer un fichier bath avec execute? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |