Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[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

Mais bon ce que j'en dis
 

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


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:
G

Guest

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

Jm,

Excuses, je croyais que tu voulais envoyer des touches (espace) dans la fenêtre Dos. Je m'a trompé.

A++
 

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

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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…