Forum - Questions générale - Sujet n°368

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par  le // : :  Sujet n° 368  Commande MsDos

le 07/05/2010 : 15:40
par marsouin_89

Anonyme

visiteur

Bonjour Pierre,Voici mon nouveau problème :J'aimerais ouvrir le fenêtre de commande MsDos, y executer un fichier *.BAT tout en laissant la fenêtre ouverte.Ensuite j'aimerais executer une autre commande, et enfin refermer la fenêtre MsDos.Voici la commande que j'ai essayée mais cela ne fonctionne pas, tu t'en doutes bien.Dim CmdDos As String
CmdDos = "D:GeoToolssetenv.bat"
Shell Environ$("comspec") & " /K " & CmdDos, vbNormalFocusLa commande que je dois ensuite executer peut ressembler à la suivante:E:>for /r %i in (*.img) do gdaltindex D:Coverage_100000.shp %~iAprès cette commande j'aimerais refermer la fenêtre MsDos.Merci beaucoup de ton aide.CordialementChristophe
Ecrire à marsouin_89  sujet clos  Haut

[]   

Réponse n° 1
--------
le 10/05/2010 : 16:19
par 3Stone

Anonyme

Administrateur

Bonjour,

Si je devrais faire une action de ce genre, j'ajouterai la seconde partie au fichier bat existant... et ensuite seulement, j'exécuterais...

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 2
--------
le 10/05/2010 : 17:36
par marsouin_89

Anonyme

visiteur

Bonjour Pierre,

En effet, c'est une bonne idée, sauf que je ne sais absolument pas comment faire. De plus, E:\>for /r %i in (*.img) do gdaltindex D:\Coverage_100000.shp %~i peut être variable du fait que E:\ peut être un autre lecteur, l'emplacement de D:\Coverage_100000.shp peut être stocké ailleurs en fonction du choix de l'utilisateur par une fenêtre "Enregistrer-sous" et enfin *.img peut être une autre extension.k

Et pour finir je ne sais toujours pas comment executer MsDos en VBA avec ma 1° ligne de commande, soit : Shell C:\WINDOWS\system32\cmd.exe /K "D:\GeoTools\setenv.bat" n

Merci beaucoupy

Cordialement

Christophe

Ecrire à marsouin_89   clos par  le // : :  Haut
Réponse n° 3
--------
le 11/05/2010 : 00:31
par 3Stone

Anonyme

Administrateur

Bonjour,

Cela peut donner quelque chose comme :

 
Code :
    Dim f As Integer
Dim sFichier As String

Set f = FreeFile
sFichier = "D:\GeoTools\setenv.bat"

Open sFichier For Append As f

Print #f, "le texte à ajouter"
Print #f, "le texte suivant..."

Close f

Shell Chr(34) & "C:\WINDOWS\system32\cmd.exe /K D:\GeoTools\setenv.bat" & Chr(34)
Set f = Nothing
 

PS: Il n'y a plus de MS-Dos dans les OS actuel wink

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 4
--------
le 11/05/2010 : 22:04
par marsouin_89

Anonyme

visiteur

Bonjour Pierre,

Merci pour ce code, toutefois j'ai quelques petit soucis.

Lorsque je lance le débogage sur ton code, j'ai un message qui me dit "Erreur de compilation : Objet requis", à la ligne "Set f=FreeFile"

J'ai donc modifié par f=FreeFile et j'ai donc supprimer Set f=Nothing

Concernant : Shell Chr(34) & "C:\Windows\System32\cmd.exe /K D:\GeoTools\setenv.bat" & Chr(34)

Il semblerait que ce soit plutôt :

Shell "C:\Windows\System32\cmd.exe /K " & Chr(34)  & "D:\GeoTools\setenv.bat" & Chr(34)

A travers ton code, j'ai tout de même compris que l'on écrit dans le fichier Bath, j'ai donc décider d'en créer un en temporaire afin de ne pas toucher au Bath origine.

Toutefois, mon dernier Print dans le script n'est pas bon.

Aurais tu un tuyau ?

Voici mon code :

Sub OuvreGeoTools()
Dim f As Integer
Dim sFichier As String
Dim StrMsDos As String
StrMsDos = "E:\>for /r %i in (*.img) do gdaltindex D:\Coverage_100000.shp %~i"

f = FreeFile
'Chemin du fichier Bath
sFichier = "D:\GeoTools\setenv_Temp.bat"

'Si le fichier existe, on le supprime
If Dir(sFichier) <> "" Then Kill sFichier
'Création du fichier Bath
Call CreerFichier(sFichier)

'Ecriture des lignes
Open sFichier For Append As f
Print #f, "@echo off"
Print #f, "PATH=%CD%\bin;%PATH%"
Print #f, "SET FWTOOLS_DIR=%CD%\FWTools2.4.3"
Print #f, "call " & Chr(34) & "%FWTOOLS_DIR%\bin\setfwenv.bat" & Chr(34)
Print #f, "call " & Chr(34) & StrMsDos & Chr(34)
Close f

'Execution de MsDos
Shell "C:\WINDOWS\system32\cmd.exe /K " & Chr(34) & "D:\GeoTools\setenv_Temp.bat" & Chr(34)

End Sub

Sub CreerFichier(ByVal sPath As String)
'Création de fichier texte
    Dim fso As FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateTextFile sPath
    Set fso = Nothing
End Sub


Cordialement

Christophe

Ecrire à marsouin_89   clos par  le // : :  Haut
Réponse n° 5
--------
le 12/05/2010 : 17:51
par marsouin_89

Anonyme

visiteur

Bonjour Pierre,

Après une journée de galère, j'ai trouvé la solution pour ma dernière ligne.

A mettre à partir de la 5° ligne :

Print #f, "C:"
Print #f, "\Mes_Images\"
Print #f, "for /r %%i in (*.img) do gdaltindex" & Chr(34) & "D:\Coverage_100000.shp" & Chr(34) & " " & Chr(34) & "%%i" & Chr(34)

Avec çà, tout fonctionne parfaitement.

Bien sur, eje suis preneur de toute autre solution.

Cordialement

Christophe

Ecrire à marsouin_89   clos par  le // : :  Haut
Réponse n° 6
--------
le 13/05/2010 : 01:39
par 3Stone

Anonyme

Administrateur

Bonjour,

 
Citation : marsouin_89

J'ai donc modifié par f=FreeFile et j'ai donc supprimer Set f=Nothing

 

Hihi...  tu as farpaitement raison... mais j'avais bien dit :
 
Citation : 3stone

Cela peut donner quelque chose

 
sans tester, ni réfléchir n n n

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 7
--------
le 13/05/2010 : 01:44
par 3Stone

Anonyme

Administrateur

re,
 
Citation :

Avec çà, tout fonctionne parfaitement.

 

C'est ce qui était recherché, non wink

Ceci dit, la méthode est bien de concaténer les différentes sections et caractères interprétés (comme tu l'as fait avec le Chr(34) )

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 8
--------
le 13/05/2010 : 12:28
par marsouin_89

Anonyme

visiteur

Bonjour Pierre,

Merci de ces précisions, cela me rassure dans mon code.

Sujet résolu.

Cordialement

Christophe

Ecrire à marsouin_89   clos par  le // : :  Haut
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut