Commande DOS

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Commande DOS

Message par brossden »

Bonjour à tous
Il y a longtemps que je ne suis plus passer sur ce forum !
J'ai une question :
Comment exécuter une commande DOS avec PureBasic ?
Par exemple ce voudrais lancer "powercfg /batteryreport" pour connaitre l'état de santé de ma batterie.
J'espère de vous aurez la réponse comme à votre habitude.

En vous souhaitant une bon Week End
Denis
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Commande DOS

Message par falsam »

Bonjour Denis.

RunProgram était pour moi la solution. Mais je n'arrive pas à obtenir le résultat de powercfg /batteryreport.

Avec le paramétre /list par contre ça fonctionne !!

Code : Tout sélectionner

EnableExplicit

Define Run = RunProgram("PowerCfg.exe", " /list", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Ascii)
Define Output.s

If Run
  While ProgramRunning(Run)
    If AvailableProgramOutput(Run)
      Output + ReadProgramString(Run) + Chr(13)
    EndIf
  Wend
  CloseProgram(Run) ; Close the connection to the program
EndIf

Debug Output
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Commande DOS

Message par Marc56 »

Bonjour brossden,

Le code le plus court: (sachant que la sortie de cette commande se fait sous forme d'une page HTML)

Code : Tout sélectionner

RunProgram("powercfg", "/batteryreport", GetTemporaryDirectory(), #PB_Program_Hide | #PB_Program_Wait)
RunProgram(GetTemporaryDirectory() + "battery-report.html")
Ne pas oublier #PB_Program_Wait avant d'ouvrir le rapport car il est lent à générer.
Après, si tu tapes powercfg /batteryreport /? tu as d'autres possibilités de sorties, dont le format XML si tu veux extraire des valeurs sans avoir à filtrer le HTML.

:wink:
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Commande DOS

Message par Mesa »

Code : Tout sélectionner

prog$ = "cmd.exe" 
dosbox = RunProgram(prog$, "", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide|#PB_Program_Ascii) 

If dosbox  
	OpenWindow(0,0,0,400,500,"Results from DosBox",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) 
	StartDrawing(WindowOutput(0)) 
	DrawText(65,200, "En cours...", #Black, GetSysColor_(#COLOR_BTNFACE)) 
	StopDrawing() 
	NewList results.s() 
	; 	WriteProgramStringN(dosbox, "ping google.com", #PB_Ascii) 
	WriteProgramStringN(dosbox, "powercfg /?", #PB_Ascii) 
	; 	WriteProgramStringN(dosbox, "powercfg /batteryreport", #PB_Ascii) 
	WriteProgramData(dosbox, #PB_Program_Eof, 0) 
	While ProgramRunning(dosbox) 
		If AvailableProgramOutput(dosbox) 
			AddElement(results()) 
			
			sOEM_in_unicode.s = ReadProgramString(dosbox, #PB_Ascii) 
			iByteLength = Len(sOEM_in_unicode) + 2      
			sOem_in_Ascii.s = Space(iByteLength)
			PokeS(@sOem_in_Ascii, sOEM_in_unicode, -1, #PB_Ascii)
			sunicode.s = Space(iByteLength)
			OemToChar_(@sOem_in_Ascii, @sunicode)
			results() = sunicode
			
		Else 
			Delay(1) 
		EndIf 
	Wend 
	AddElement(results()) 
	AddElement(results()) 
	results() = "Program finished with exit code = " + Str(ProgramExitCode(dosbox)) 
	CloseProgram(dosbox) 
	
	ListViewGadget(0,0,0,400,500) 
	ForEach results() 
		AddGadgetItem(0, -1, results()) 
	Next 
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
	
Else 
	MessageRequester("OOPS!", "Can't find " + prog$ ) 
EndIf 
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: Commande DOS

Message par brossden »

WOW ! Toujours aussi rapides

Un grand Merci à vous tous c'est super sympa comme dans mon souvenir !
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Commande DOS

Message par Kwai chang caine »

Brooooosssdeeeennn !!!!
Je te croyais mort !!! :cry:
Rien que revoir ton pseudo, j'en croyais pas mes "zieux" 8O
Je suis replongé direct ...dans ma vie périnatale PB :mrgreen:

Image

En tout cas...ça fait toujours plaisir de lire les mots d'une vieille branche :wink:

PB un jour...PB toujours 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Commande DOS

Message par Ar-S »

brossden a écrit : Un grand Merci à vous tous c'est super sympa comme dans mon souvenir !
Très heureux de te relire !.
~~~~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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Commande DOS

Message par Ollivier »

Coucou Brossden, cool le signe de vie.
Bon ben voilà, tout a été dit :
- une commande PB : RunProgram()
- un pipe-line entre le programme exécuté, et PB
- une légère traduction des données échangées car les codes caractère ne représentent pas toujours la même chose.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: Commande DOS

Message par brossden »

Salut à tous.

Vous n'allez pas me croire mais depuis que je suis à la retraite je n'ai le temps de rien faire. Entre les dessins 3D pour créer des pièces, la découpe Laser l'utilisation de CNC (fraiseuses à commande numérique) tondre la pelouse... Dur dur la vie de retraité !
Je suis heureux de tous vous voir ici fidèles au poste Kwai chang caine, falsam, Ars, Ollivier ... !!!
Que devenez vous tous ? Retraités, bientôt retraités ou payez-vous encore la mienne pour quelques années !
J'essaierai de passer plus souvent ici promis.
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Commande DOS

Message par Ar-S »

héhé parti pour payer la tienne encore un bon moment en espérant en toucher une un jour :twisted:
~~~~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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Commande DOS

Message par Kwai chang caine »

brossden a écrit : jeu. 26/mai/2022 16:40 Vous n'allez pas me croire (mais depuis que je suis à la retraite je n'ai le temps de rien faire.)
Oh que si !!!! :mrgreen:
Tout pareil, on se demande comment on arrivait à avoir une journée de boulot + un autre travail la semaine et encore un autre pour se "reposer" le week end.
Et encore on trouvait du temps pour faire d'autres activités 8O
Maintenant je me demande tous les matins si ça vaut le coup de se lever, car j'ai l'impression de me coucher quelques minutes après :roll:

Ce doit être un genre de "Syndrome du retraité".. mon frère qui était d'astreinte dans une grosse boite sur tout LYON et son agglomération, appelé souvent en urgence par les pompiers, travaillait parfois jour et nuit pour éviter des grandes catastrophes, avec la sirène et le bleu (Putain c'est pas à moi qu'ils auraient confié ça, c'est un rêve de gosse :lol: ) , il avait aussi le temps de faire des activités en plus.
Depuis qu'il est à la retraite, il me dit : "Putain mais où on trouvait le temps d'aller 8h (et le pouce) au boulot !!! " 8O
brossden a écrit : jeu. 26/mai/2022 16:40 Entre les dessins 3D pour créer des pièces, la découpe Laser l'utilisation de CNC (fraiseuses à commande numérique) tondre la pelouse... Dur dur la vie de retraité !
Ce doit être "passionnant comme passion", j'aimerais trop voir ça 8)
Moi qui suit déjà émerveillé par le plasma que je me suis acheté, à force d'en avoir marre de faire des aller retour à l'hosto toute la nuit pour me faire retirer les poutres dans l’œil que ma chère meuleuse avait la délicate habitude de m'envoyer :?
Moi en métallurgie, je suis un peu comme en informatique.... :oops:

J'ai toujours admiré les pros de la mécanique générale 8O
Gamin, quand je faisais mes études à la XRousse je les croisais dans la cour de l'école, mais on se parlait jamais :|
En fait, les électriciens snobaient les mécanos, car ils disaient que si il faisaient ce métier, c'était parce qu"ils en avaient pas assez derrière la calandre pour pouvoir faire un métier de réflexion !!! qu'est ce qu'on est con quand on est jeune :lol:
Maintenant quand j'en croise un avec tout ce qu'il sait pour pouvoir tailler un bout de métal, je regrette d'avoir écouté mes copains :oops:
Pour en avoir le coeur net...Je me suis acheté un petit tour qui était dans une usine de Citroen, j'ai cru que de l'acheter me suffirait...il orne mon atelier depuis des années, c'est cool comme déco :mrgreen:
J'ai peur de l’allumer et de me prendre un mord dans ce qui me sert de tronche, tient.... si je recroisait mes anciens électriciens de copains d'école, je les mettrais bien devant pour qu'ils m'expliquent comment ils feraient pour remplacer ne serait-ce qu'un instant, un seul des "handicapés du bulbe" que l'on snobait dans la cour de l'école. :roll:
brossden a écrit : jeu. 26/mai/2022 16:40Je suis heureux de tous vous voir ici fidèles au poste Kwai chang caine, falsam, Ars, Ollivier ... !!!
Surement pas autant que moi !!!! :wink:
Tu as été un des premiers à m’accueillir avec Dobro,

Image

Et ça....les copains de tranchée....ça s'oublie pas !!! 8)
PB un jour, PB toujours, je n'ai de cesse de le répeter :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: Commande DOS

Message par brossden »

Salut Kwai chang caine
toujours aussi porté sur le longs discours humoristique à ce que je vois !

Salut Ar-s
ne t'inquiète pas tu y arriveras bien un jour !

Salut à tous ceux qui ont tenter de m'aider mais je me suis mal exprimé et je ne sais pas trop comment vous expliquer la chose.

je sais qu'il est possible d'utiliser un "artifice" pour écrire dans un répertoire système d'un pc distant dont on ne connais le nom du destinataire de ce fichier.
exemple pour écrire dans mon répertoire document il faudrait savoir quel est le nom de l'utilisateur windows
J'ai déjà vu un truc dans le genre : cd c:\%documents% ....
Denis

Bonne Jounée à tous
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Commande DOS

Message par Marc56 »

brossden a écrit : ven. 27/mai/2022 16:27 je sais qu'il est possible d'utiliser un "artifice" pour écrire dans un répertoire système d'un pc distant dont on ne connais le nom du destinataire de ce fichier.
exemple pour écrire dans mon répertoire document il faudrait savoir quel est le nom de l'utilisateur windows
J'ai déjà vu un truc dans le genre : cd c:\%documents% ....
Sur un PC distant, sans connaitre le nom d'utilisateur, difficile.
Sur un PC local GetEnvironmentVariable() permet de récupérer tout ce qu'on a en tapant la commande dos SET
Voir aussi UserName(), GetUserDirectory() depuis PB 5.60
:wink:
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Commande DOS

Message par cage »

Bonjour,
Pour avoir accès aux dossiers/fichiers d'un PC distant il faut au minimum être administrateur local dudit PC.
Si les PC font parti d'un domaine Active Directory, le compte utilisé pour avoir accès aux dossiers/fichiers doit être administrateur du domaine.

Pour accéder au PC distant, il faut utiliser les partages administratifs s'ils n'ont pas étés désactivés.
Pour afficher les partages administratifs sur son PC

Code : Tout sélectionner

C:\Users\admin>net share

Nom partage  Ressource                       Remarque

-------------------------------------------------------------------------------
ADMIN$       C:\Windows                      Administration à distance
C$           C:\                             Partage par défaut
D$           D:\                             Partage par défaut
IPC$                                         IPC distant
Y$           Y:\                             Partage par défaut
EBCAGE Disk C
             C:\
EBCAGE Disk D
             D:\
EBCAGE Disk Y
             Y:\
PUBLIC       Y:\PUBLIC
Users        C:\Users
La commande s’est terminée correctement.


C:\Users\admin>
Dans mon cas, les partages administratifs sont C$, D$, Y$ pour les disques (physiques ou virtuels) plus ADMIN$ et IPC$
Un nom de partage qui se termine par $ est un partage caché.

Pour connaitre les utilisateurs du PC distant, il suffit de regarder dans le partage Users
Pour s'y connecter depuis son PC si on a les bons droits, \\@IP_PC_Distant\Users
Pour se connecter au disque C: du PC distant et avoir accès a l'intégralité du disque, \\@IP_PC_Distant\C$

Accès rapide, WIN+R et \\@IP_PC_Distant\C$ dans Ouvrir :

cage
■ 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: Commande DOS

Message par brossden »

Kwai chang caine

Tu habites dans quelle région?
Moi je suis dans la proche banlieue de LYON à Irigny exactement
Denis

Bonne Jounée à tous
Répondre