SHELL pgm >fic.txt ne marche pas

Résolu
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012 - 28 févr. 2008 à 10:23
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 5 mars 2008 à 03:25
Bonjour,

En VB6, si je code :
Shell "D:\programmes VB\suivi pgm\PSLIST.EXE >file_log.txt"

la commande PSLIST s'exécute bien mais le résultat n'est pas dans le fichier file_log.txt.
Si je mets cette même commande dans un fichier appelé PSL.BAT et que je fasse un shell de ce fichier BAT : SHELL "D:\programmes VB\suivi pgm\PSL.BAT", mon fichier TXT est bien créé.
Pourquoi le résultat ne va pas dans le fichier pointé sur >file_log.txt ?

Nota : PSLIST est est programme de SysInternals disponible dans le WEB qui permet de lister tous les process en cours sous Windows.

Merci de votrer aide.

Notpa01

31 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 mars 2008 à 16:38
notpa01
-> tu as essayé ma proposition Function RunPsList ?
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
2 mars 2008 à 11:56
Salut PCPT,

J'ai testé : tjrs pareil : pas de TXT créé.

Notpa01
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
2 mars 2008 à 21:18
Salut
Après avoir éliminé les guillemets superflus je suis arrivé à  cette instruction:

Shell ("cmd.exe /c c:\utile\psctools\pslist.exe > c:\utile\psctools\pslist.txt")

Bien entendu il faut ajouter  dans le cas d'un  réseau  \\ nom_ordinateur

Je suis sur XP Home +Sp2
VB6 natif  version 8176
amicalement
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
4 mars 2008 à 09:57
Désolé Guilou34 mais même avec ta suggestion, tjrs pas de fichier TXT créé.

Merci quand même

PS : J'ai testé sous XP SP2 et Vista, tous deux avec VB 6 version 8176 aussi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
4 mars 2008 à 11:41
Et si tu essayais ceci:  (aucune déclaration, aucun objet)

Private Sub Form_Load()
Shell ("cmd.exe /c ipconfig /all  > c:\ip.log")
End Sub

Il serait intéressant de savoir si le fichier ip.log est créé ou pas .
Amicalement 
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
4 mars 2008 à 14:03
Bonjour Guilou34,

Ça, ça marche ! Le fichier iplog est bien créé et contient bien ma config IP.

Donc, résumons:

Shell ("cmd.exe /c D:\programmesVB\suivi pgm\pslist.exe > D:\programmesVB\suivi pgm\pslist.txt")

ne crée pas de fichier TXT

Shell ("cmd.exe /c ipconfig /all  > c:\ip.txt")

crée un fichier TXT.

mais, après avoir copié PSLIST.EXE dans la racine C:

Shell ("cmd.exe /c C:pslist.exe > C:\pslist.txt")

le fichier TXT est créé !!!

Shell ("cmd.exe /c C:pslist.exe > D:\pslist.txt")

fichier TXT créé !

Shell ("cmd.exe /c D:\programmesVB\suivi pgm\pslist.exe > c:\pslist.txt")
Shell ("cmd.exe /c D:\programmesVB\suivi pgm\pslist.exe > d:\pslist.txt")
 
le fichier TXT est créé mais vide !

C'est encore plus tordu !!! Suivant le path indiqué par >  et l'endroit où se trouve le fichier EXE, le fichier TXT est créé ou pas !!!

Par contre,

Shell ("C:pslist.exe > C:\pslist.txt")  ou  Shell ("ipconfig > C:\ip.txt")

ne crée tjrs pas de fichier TXT. Il faut donc bien passer par l'invite de commandes CMD.

Question à 1? : pourquoi faut-il être dans la racine C: pour créer mon fichier TXT dans une racine et pas un path ???

Avis au amateurs !!!

Notpa01
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
4 mars 2008 à 16:14
Salut PCPT,

Avec ton code, ça marche. Le fichier

log_activity.txt est bien créé et contient bien le résultat de la commande PSLIST.
Par contre, le nom généré est de format court (LOG_AC~1.TXT) et non


og_activity.txt.

Mais pas simple, par rapport à une simple commande Shell !

Merci

Notpa01
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
4 mars 2008 à 16:19
Au fait, c'est normal que le fichier
LOG_AC~x.TXT est créé sous un nom différent chaque fois que j'éxécute ce code ?
LOG_AC~1.TXT,
LOG_AC~2.TXT,

LOG_AC~3.TXT,  LO166E~1.TXT, LO166E~2.TXT, LO166E~3.TXT, LO166E~4.TXT, etc.
Même en codant  RunPsList = Shell("cmd.exe /c " & sExe & sArg & ">> " & sFile) (>> pour réutiliser le même fichier), il génère un nouveau fichier TXT.

Notpa01
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
4 mars 2008 à 17:58
Salut
Que le nom change à chaque fois c'est propre à msdos : chaque fois qu'il doit remplacer un nom long,  il l'abrège sous la forme XXXXXX~n.XXX et si n existe il le remplace par n+1.

La création d'un fichier vide s'explique par le fait que si Cmd  ne trouve pas et donc n'exécute pas Pslist,  il effectue quand même la redirection  > fichier.txt et comme le canal de sortie est vide, il en va de même pour le fichier.

Pour le vérifier il suffit de faire volontairement une erreur dans le chemin de Pslist
Ou bien comme tu l'a fait avec un espace dans le nom d'un  répertoire:
 cmd a voulu exécuter "d:\programmesVB\suivi"  et comme suivi n'existe pas, il a pris pgm\pslist.exe comme un argument et exécuté la redirection.
 
PCPT-> Bravo, mais en peu long quand même.
Notpa01-> Nous sommes presque comtemporains:  j'ai encore un lot  de cartes perforées vierges ça t'interesse
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
4 mars 2008 à 18:34
Guilou34 --> les cartes perforées, 80 ou 96 colonnes ? Mais je crois que j'aurais du mal à trouver une trieuse ou une tabu 421. Quand à la perfo 029... il me reste une vielle P80!!! lol !!!

Merci à tous. Je crois qu'on peut fermer le sujet.

Au fait, comment marque-t-on un sujet comme clos ?

Amicalement

Notpa01
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 mars 2008 à 03:25
il te suffit de valider (cliquer bouton "Réponse acceptée!") la ou les réponses qui t'ont apporté une solution

bonne continuation à tous ;)
++
PCPT  [AFCK]
0
Rejoignez-nous