[VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Staple1600

XLDnaute Barbatruc
Bonjour à tous

PREAMBULE: ce fil est liè a celui-ci:
Firefox 3 -places.sqlite

Je suis coincé à ce niveau:
La macro suivante crée le batch et le lance (ça c'est OK)

Code:
Sub cree_bat()
Open "c:\temp\Ftest.bat" For Output As #1
Print #1, "cd\"
Print #1, "cd c:\sqlite3"
Print #1, "sqlite3 places.sqlite"
Print #1, ".dump txt"
Print #1, ".output test.txt"
Print #1, "select url,title from moz_places;"
Print #1, ".exit"
Close #1
Shell "c:\temp\Ftest.bat", vbNormalFocus
End Sub
Sauf que le batch lui ne fonctionne pas

Je cherche un moyen par VBA, d'envoyer les instructions (contenues dans le batch) dans l'invite MSDos et de simuler à chaque fin de chaine l'appui sur la touche ENTER.

Les instructions quand on les passe manuellement à partir de l'invite MSDos , une par une et qu'on appuie sur ENTER fonctionne.

Avez-vous une idée sur la façon de s 'y prendre ?
 

RENAUDER

Nous a quitté
Repose en paix
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour,
Sans garantie mais peux-tu essayer ceci
Code:
Sub cree_bat()
    Open "c:\temp\Ftest.bat" For Output As #1
    Print #1, "cd\"
    Print #1, "cd c:\sqlite3"
    Print #1, "sqlite3 places.sqlite"
    Print #1, ".dump txt"
    Print #1, ".output test.txt"
    Print #1, "select url,title from moz_places;"
    Print #1, ".exit"
    Close #1
    Shell "command.com /C c:\temp\Ftest.bat", vbNormalFocus
End Sub
Ou ...
Code:
Sub cree_bat()
    Open "c:\temp\Ftest.bat" For Output As #1
    Print #1, "cd\"
    Print #1, "cd c:\sqlite3"
    Print #1, "sqlite3 places.sqlite"
    Print #1, ".dump txt"
    Print #1, ".output test.txt"
    Print #1, "select url,title from moz_places;"
    Print #1, ".exit"
    Close #1
    CmdBat = "c:\temp\Ftest.bat"
    Set oShell = CreateObject("WSCript.shell")
    Tmp = oShell.Run(CmdBat, 1, True)
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour RENAUDER


Merci de ton aide

Mais comme je le disais le script est bien lancé par VBA
le problème c'est de prendre la main sur l'invite MDos

En prenant un exemple simple

Code:
Sub cree_bat()
    Open "c:\Fdir.bat" For Output As #1
    Print #1, "cd\"
    Print #1, "dir /?"
    Close #1
Shell "d:\Fdir.bat", vbNormalFocus
End Sub
Le batch se lance et fait bien le dir /?

Mais maintenant comment envoyer dans l'invite l'appui sur la touche ESPACE ?
 
C

Compte Supprimé 979

Guest
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Salut Staple1600, Renauder,

Le batch se lance et fait bien le dir /?
Mais maintenant comment envoyer dans l'invite l'appui sur la touche ESPACE ?
Complètement impossible à faire !

Tu envois une instruction à MS-DOS, qui attends un appui sur la barre d'espace pour continuer alors qu'il est toujours daans la même commande :confused:

Mais bon ce que j'en dis :D
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re

Bonjour BrunoM45

Il me semblait que c'était possible sous DOS
(avec echo et pipe)

Tu es sur que c'est impossible ?


PS: Le script précédent c'est pour l'exemple , c'est le premier script que je voudrais faire fonctionner
 

RENAUDER

Nous a quitté
Repose en paix
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour,
Comme je ne sais pas exactement ce que tu veux faire.
Code:
Sub cree_bat()
    Open "c:\temp\Ftest.bat" For Output As #1
    Print #1, "cd\"
    Print #1, "dir /?"
    Print #1, "pause"
     Close #1
     CmdBat = "c:\temp\Ftest.bat"
    Set oShell = CreateObject("WSCript.shell")
    Tmp = oShell.Run(CmdBat, 1, True)
    Cmd = "cmd.exe"
    Set oShell = CreateObject("WSCript.shell")
    Tmp = oShell.Run(Cmd, 1, True)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re RENAUDER

Ton script ne fonctionne pas comme désiré
Le but est de créer par VBA un fichier batch contenant une succession
de commandes MSDOS (qui fonctionne si c'est l'utilisateur qui saisit ces commandes manuellement dan l'invite MSDOS)
En reprenant le script exemple, quand l'utilisateur saisit
dir /? [ENTER]
MSDos affiche le début de l'aide et demande d'appuyez sur une touche

Microsoft Windows [version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation. Tous droits réservés.

C:\>dir /?
Affiche une liste de fichiers et de sous-répertoires dans un répertoire.

DIR [lecteur:][chemin][nom_de_fichier] [/A[[:]attributs]] [/b] [/C] [/D] [/L]
[/N] [/O[[:]tri]] [/P] [/Q] [/R] [/S] [/T[[:]heure]] [/W] [/X] [/4]

[lecteur:][chemin][nom_de_fichier]
Spécifie le lecteur, le répertoire et/ou fichiers à lister.

/A Affiche les fichiers dotés des attributs spécifiés.
attributs D Répertoires R Lecture seule
H Caché A Archive
S Système I Fichiers indexés sans contenu
L Points d'analyse - Préfixe de négation
/B Utilise le format abrégé (noms des fichiers).
/C Affiche le séparateur de milliers pour les tailles de fichiers.
Ceci est la valeur par défaut. Utilisez /-C pour désactiver l'affichage
du séparateur.
/D Sur cinq colonnes avec fichiers triés par colonne.
/L Affiche en minuscules.
/N Nouveau format longue liste où les noms de fichiers sont à droite.
/O Affiche les fichiers selon un tri spécifié.
tri N Nom (alphabétique) S Taille (ordre croissant)
E Extension (alphabétique) D Date et heure (chronologique)
Appuyez sur une touche pour continuer...

Ce que je voudrais c'est que VBA simule l'appuie sur une touche.

Or actuellement que ce soit avec mon script ou le tien, cela ne fonctionne pas.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re

Merci de confirmer mes souvenirs , RENAUDER :)
(echo et pipe)
Mais malheureusement ça ne fonctionne pas avec VBA.
C'est ici que j'en étais rendu avant de créer cette discussion.

Comment prendre la main sur l'invite MSDOS par VBA?
 
G

Guest

Guest
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Staple,

Je viens de tester ceci à tout hasard, et apparement cela fonctionne:

Code:
Sub test()
   Shell "cmd", vbNormalFocus
   Application.Wait Time + TimeSerial(0, 0, 2)
   SendKeys "AAAA"
End Sub

A+
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour



En Dos , ce ne fonctionne pas non plus ainsi
(le fichier $prg$ est bien créé
mais le TYPE TYPE $prg$ | sqlite3.exe ne fonctionne pas malheureusement
Code:
@ECHO OFF
ECHO sqlite3 places.sqlite > $prg$
ECHO .dump txt >> $prg$
ECHO .output XXtest.txt >> $prg$
ECHO select url,title from moz_places; >> $prg$
ECHO .exit >> $prg$
TYPE $prg$ | sqlite3.exe

EDITION: houps, bonsoir Hasco, t'avais pas vu passer, je teste ton code de suite.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re

EDITION: je rappelle que ce post est lié a celui-ci: Firefox 3 importer places.sqlite
et que ma motivation est juste de trouver d'autres façons de faire.

Hasco
Je veux simuler l'appui d'une touche
(le premier script VBA crée un fichier batch et le lance ça c'est OK
sauf que le batch n'exécute pas les lignes qu'il contient puisque je ne simule pas dans le code
VBA l'appui sur la touche ENTER

et ce script ci-dessous c'est juste pour tester ;)

Code:
Sub Test_PAS_OK()
   Shell "cmd", vbNormalFocus
   Application.Wait Time + TimeSerial(0, 0, 1)
   SendKeys "dir /?"
   Application.Wait Time + TimeSerial(0, 0, 1)
   SendKeys "~"
End Sub
PS: Certains diront que je me complique la vie puisque la solution donnée par BrunoM45 fonctionne avec ADO+ driver SQLite3, mais j'aime bien compliquer les choses avec VBA
pour nourrir ma curiosité ;)
M
 
Dernière édition:
G

Guest

Guest
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Jm,

Chez moi c'est ok avec:

Sub Test__OK()
Shell "cmd", vbNormalFocus
Application.Wait Time + TimeSerial(0, 0, 3)
SendKeys "dir /?"
Application.Wait Time + TimeSerial(0, 0, 3)
SendKeys Chr(13)
End Sub

A+
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

RE Hasco

Je parie que tu es sous XP :p

J'ai bien fait de passer à Vista tiens!

Bouge pas , je m'en vais rebrancher mon PC sous W98SE

car ici ça ne fonctionne pas

le dir /? est bien exécuter
par l'appui sur une touche
 
Dernière édition:

Statistiques des forums

Discussions
312 094
Messages
2 085 231
Membres
102 828
dernier inscrit
cdupire