Lancer des commandes bat
Lancer des commandes bat
Bonsoir
j'ai une douzaine de commandes batch que je voudrais executer depuis mon programme en purebasic, en general j'ecris tout ca dans un fichier bat que je fourre quelque part dans l'ordinatuer, puis je le lance avec runprogram.
existe-il un moyen plus propre? je voudrais avoir un moyen de lancer ca directement depuis le programme sans passer par un fichier bat.
merci
j'ai une douzaine de commandes batch que je voudrais executer depuis mon programme en purebasic, en general j'ecris tout ca dans un fichier bat que je fourre quelque part dans l'ordinatuer, puis je le lance avec runprogram.
existe-il un moyen plus propre? je voudrais avoir un moyen de lancer ca directement depuis le programme sans passer par un fichier bat.
merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: Lancer des commandes bat
C'est quoi le soucis avec RunProgram() ? Tu peux tout lancer avec, même une simple page web. Je comprends pas.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Lancer des commandes bat
Je pense que le probléme n'est pas RunProgram() mais bien de ne pas avoir à créer de fichier batch non?
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Lancer des commandes bat
Bonjour,
J'utilise des DataSection et des IncludeBinary pour transporter mes fichiers batch dans l'exe.
C'est un bout de code nettoyé. Peut-être des erreurs. C'est juste le principe.
J'ai un répertoire data dans lequel je met tous les fichiers a inclure dans l'exe.
Ce peut être des bat, des cmd, des txt ou autre.
Le fichier cmd peut-être extrait dans %TMP% puis exécuté, puis effacé.
Gérard
J'utilise des DataSection et des IncludeBinary pour transporter mes fichiers batch dans l'exe.
Code : Tout sélectionner
Procedure makeSomeFiles()
Protected addr.i, file.s, leng.l
DataSection
;;; SCRIPTS
IB01:
IncludeBinary "Data\myscript1.cmd"
IB02:
IncludeBinary "Data\myscript2.cmd"
EndDataSection
Structure ref
addr.i
name.s
size.i
EndStructure
NewMap files.ref()
;;
;;non-permanent files
;;
files("1")\addr = ?IB01
files("1")\name = TOOLS + "myscript1.cmd"
files("1")\size = ?IB02 - ?IB01 ; get size of included binary
;
files("2")\addr = ?IB02
files("2")\name = TOOLS + "myscript2.cmd"
files("2")\size = ?IB03 - ?IB02 ; get size of included binary
;
ForEach files()
file = LCase(files()\name)
;Debug "key=" + MapKey(files())
Select Val(MapKey(files()))
Case 1 To 4
Default
If ReadFile(#FileNum, file) : Continue : EndIf ; skip straight to the end of ForEach file()
EndSelect
;Debug "key=" + MapKey(files())
If CreateFile(1, file)
addr = files()\addr
leng = files()\size ; size of Included Binary
;Debug "addr=" + Str(addr)
;Debug "size=" + Str(leng)
WriteData(1, addr, leng)
CloseFile(1)
EndIf
Next
FreeMap(files())
EndProcedure ; makeSomeFiles()
J'ai un répertoire data dans lequel je met tous les fichiers a inclure dans l'exe.
Ce peut être des bat, des cmd, des txt ou autre.
Le fichier cmd peut-être extrait dans %TMP% puis exécuté, puis effacé.
Gérard
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Lancer des commandes bat
C'est ce que je fait toujours, je me demandais juste si il n'y avait pas un autre moyen
Merci
Merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: Lancer des commandes bat
Pour 12 commandes, il est possible d'empiler 12 RunProgram() a la suite avec un Wait pour être sur de ne pas exécuter le deuxième avant que le premier soit terminé.
Le tout, c'est de savoir quelles sont ces 12 commandes et si elles ne dépendent pas l'une de l'autre.
Le tout, c'est de savoir quelles sont ces 12 commandes et si elles ne dépendent pas l'une de l'autre.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Lancer des commandes bat
Amis nocture bonsoir ^^
Et dans ces 12 batchs ou peut être seulement quelque uns, tu es sûr que PB ne peux pas faire l'affaire via ses propres commandes ?
Et dans ces 12 batchs ou peut être seulement quelque uns, tu es sûr que PB ne peux pas faire l'affaire via ses propres commandes ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Lancer des commandes bat
Peux-tu nous donner un exemple de cette douzaine de commandes.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Lancer des commandes bat
On peut lancer les commandes une par une avec ce code inspiré de la doc:
Mesa.
Code : Tout sélectionner
Procedure.s PureCommand(Commande$, Invisible=#True)
Protected CommandConsole, Options, Sortie$
If Invisible=#True
Options = #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide
Else
Options = #PB_Program_Open | #PB_Program_Read
EndIf
CommandConsole = RunProgram("cmd.exe", Commande$, "", Options)
If CommandConsole
While ProgramRunning(CommandConsole)
If AvailableProgramOutput(CommandConsole)
Sortie$ = Sortie$ + ReadProgramString(CommandConsole) + #CR$
;
EndIf
Wend
Sortie$ + #CR$ + #CR$
Sortie$ + "Code de retour : " + Str(ProgramExitCode(CommandConsole))
CloseProgram(CommandConsole) ; Ferme la connection vers le programme
EndIf
ProcedureReturn Sortie$
EndProcedure
MessageRequester("Sortie", PureCommand(" /c ipconfig /all"))
MessageRequester("Sortie", PureCommand(" /?"))
; MessageRequester("Sortie", PureCommand(" /c dir"))
Debug PureCommand(" /c dir")
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Lancer des commandes bat
Exact, j'allais proposer le même... Grillé 
Je me demande si ce n'est pas plus pratique d'utiliser WriteProgramString() pour écrire les une aprés les autres les commandes dans CMD ? Ca évite d'en lancer plusieurs instances.

Je me demande si ce n'est pas plus pratique d'utiliser WriteProgramString() pour écrire les une aprés les autres les commandes dans CMD ? Ca évite d'en lancer plusieurs instances.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Lancer des commandes bat
WriteProgramString() avec un seul runprogram ?
Ça marche ?
Ça marche ?
Windows 10 x64 -- Purebasic 5.70 LTS x86
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Lancer des commandes bat
Il me semble que oui, puisqu'on écrit juste sur l'entrée standard (stdin), comme une frappe clavier...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Lancer des commandes bat
Code : Tout sélectionner
;trouvé ici http://purebasic.info/phpBB3ex/viewtopic.php?f=1&t=4449&p=84131&hilit=%23PB_Program_Write#p84131
Procedure.s OemToChar(String.s)
OemToChar_(@String, @String)
ProcedureReturn String
EndProcedure
prog = RunProgram("cmd.exe", "", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
;Delay(200)
If IsProgram(prog)
WriteProgramStringN(prog, "dir /?") ;WriteProgramStringN(prog, "tracert purebasic.info")
WriteProgramStringN(prog, "cls")
WriteProgramStringN(prog, "echo off")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, "ipconfig /all")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, " ")
WriteProgramStringN(prog, "date /T")
WriteProgramStringN(prog, "echo ok")
WriteProgramStringN(prog, "exit")
While ProgramRunning(prog)
If AvailableProgramOutput(prog)
x=0
Answer$=OemToChar(ReadProgramString(prog))
If Answer$
Debug Answer$
EndIf
EndIf
Delay(50) ; commentez cette ligne pour aller plus vite
Wend
EndIf
Re: Lancer des commandes bat
merci mais ce code n'a pas l'air de marcher
les commandes que je veux lancer sont
les commandes que je veux lancer sont
Code : Tout sélectionner
sc config dhcp start= disabled
net stop dhcp /y
sc config dnscache start= disabled
net stop dnscache /y
sc config netman start= disabled
net stop netman /y
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: Lancer des commandes bat
Avec le code de mesa et la commande
ça marche, je n'ai pas essayé la suite car je ne souhaite pas lacer des bidouilles dhcp sur mon pc mais peux tu dire ou ça ne marche pas ?
Code : Tout sélectionner
WriteProgramStringN(prog, "sc config")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels