|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Envoie d'une commande au DOS (CMD) |
| Débuté par Chronocoll_Bernard, 28 oct. 2025 11:39 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 7 messages |
|
| Posté le 28 octobre 2025 - 11:39 |
Bonjour les copains, Je veux compter le nombre de lignes d'un très volumineux fichier (>> 4 MM lignes, au moins). Je veux utiliser pour cela une instruction dos très simple et très rapide : C:\Windows\System32\cmd.exe /u /c find /c /v "" + le chemin du fichier à analyser
Dans mon cas : Str_LigneCommande = "C:\Windows\System32\cmd.exe /u /c find /c /v " + caract(34) + caract(34) + " " + Str_NomFichier
C'est l'instruction de lecture qui se passe mal, elle me donne une chaine de retour vide.
Str_Sortie est une chaîne = MaCommandeAExécuter.LitSortieStandard(Vrai)
Quelqu'un d'entre vous a t il déjà fait marcher un truc pareil ?
Je vous donne comme info sup que la ligne de commande qui est enregistrée dans la variable Str_LigneCommande, lorsque j'ouvre la console et que je l'exécute, elle me donne le bon résultat !
Microsoft Windows [version 10.0.26200.6901] (c) Microsoft Corporation. Tous droits réservés. C:\Users\Admin>C:\Windows\System32\cmd.exe /u /c find /c /v "" "R:\@prenoms-2023-dpt.csv" ---------- R:\@PRENOMS-2023-DPT.CSV: 3884324 C:\Users\Admin>
Str_Commande est une chaîne = "/u /c find /c /v " + Caract(34) + Caract(34) +" " + Caract(34) + Str_CheminFichier + Caract(34) MaCommandeAExécuter est une Commande
MaCommandeAExécuter.Exécutable = "C:\Windows\System32\cmd.exe" MaCommandeAExécuter.Arguments = Str_Commande
MaCommandeAExécuter.Flux = cmdSortieStandard
Bool_Resultat = CmdExécute(MaCommandeAExécuter, Vrai) SI Bool_Resultat ALORS Str_Sortie est une chaîne = MaCommandeAExécuter.LitSortieStandard(Vrai) SI (Str_Sortie<> "") ALORS I_NbreLigne = Val(SansEspace(ExtraitChaîne(Str_Sortie, -1, ":"))) SINON Info("Pas de ligne détectée par la fonction cmd") FIN SINON Info("Erreur lors de l'exécution de la commande","cmd " + Str_Commande) FIN RENVOYER I_NbreLigne
Ici, Str_Sortie est toujours vide...... 
Un grand merci à vous d'avoir lu jusqu'ici ! Bernard |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 283 messages |
|
| Posté le 28 octobre 2025 - 14:08 |
Bonjour Bernard,
Essayes ceci... ça devrait fonctionner :
MaCommandeAExécuter est une Commande I_NbreLigne est un entier MaCommandeAExécuter.Exécutable = "C:\Windows\System32\find.exe" MaCommandeAExécuter.Arguments = "/c /v " + Caract(34) + Caract(34) +" " + Caract(34) + Str_CheminFichier + Caract(34) MaCommandeAExécuter.Flux = cmdSortieStandard Bool_Resultat est un booléen = cmdExecute(MaCommandeAExécuter, Vrai) SI Bool_Resultat ALORS Str_Sortie est une chaîne = MaCommandeAExécuter.LitSortieStandard(Vrai) SI (Str_Sortie<> "") ALORS I_NbreLigne = Val(SansEspace(ExtraitChaîne(Str_Sortie, rangDernier, ":"))) SINON Info("Pas de ligne détectée par la fonction cmd") FIN SINON Info("Erreur lors de l'exécution de la commande") FIN RENVOYER I_NbreLigne
Cdlt Fabrice |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
| Posté le 28 octobre 2025 - 14:49 |
Fabrice N a écrit :
Bonjour Bernard,
................................ Cdlt Fabrice
Merci beaucoup, Fabrice, ca fonctionne effectivement parfaitement, j'ai le bon nombre de lignes qui remonte. C'est mon instruction MaCommandeAExécuter.LitSortieStandard(Vrai)
Qui était mal écrite.... Au plaisir ! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 131 messages |
|
| Posté le 29 octobre 2025 - 09:58 |
Chronocoll_Bernard a écrit :
C'est mon instruction MaCommandeAExécuter.LitSortieStandard(Vrai) Qui était mal écrite....
heu non, c'est ton exécutable qui n'était pas le bon. Tu avais mis cmd.exe au lieu de find.exe |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|