Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

passer une string dans une commande shell?

16 réponses
Avatar
chris
salut a tous,

je voudrais savoir si il est possible de passer une commande shell a partir
d'une string?

10 réponses

1 2
Avatar
LE TROLL
Salut, je crois que oui :o)

Par exemple
x = Shell("NotePad.exe " & App.Path & "NomFic.txt", 1)

Tu dois pouvoir faire:
dim nomFichier as string
nomFichier = "NomFic.txt"
x = Shell("NotePad.exe " & App.Path & nomFichier, 1)
-------------

"chris" <beynost[nospam]@free.fr> a écrit dans le message de
news: 422ff8d1$0$30325$
salut a tous,

je voudrais savoir si il est possible de passer une
commande shell a partir d'une string?



Avatar
Pascal B.
"LE TROLL" a mal écrit:
| x = Shell("NotePad.exe " & App.Path & nomFichier, 1)

Attention:
Cala peut ne pas fonctionner; surtout si il y a des espaces dans les chemins (Path) qui pouraient être interprétés comme
séparateurs.
Il vaut mieux entourer chaque paramètre par des guillemets (code ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)

Cordialement,

Pascal B.
Avatar
LE TROLL
Salut, merci "B", je savais que tu terinerais le menu
travail :o) lol...
----------
"Pascal B." a écrit dans le
message de news: %
"LE TROLL" a mal écrit:
| x = Shell("NotePad.exe " & App.Path & nomFichier, 1)

Attention:
Cala peut ne pas fonctionner; surtout si il y a des
espaces dans les chemins (Path) qui pouraient être
interprétés comme
séparateurs.
Il vaut mieux entourer chaque paramètre par des guillemets
(code ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)

Cordialement,

Pascal B.




Avatar
ng
Salut,

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)


Plus clair et plus rapide, il suffit de doubler les guillemets :

De plus tu as oublié un espace entre notepad.exe et l'argument :

Call Shell("NotePad.exe """ & App.Path & nomFichier & """", vbNormalFocus)

Et tjrs pareil : attention à App.Path qui ne renvoie pas tjrs un à la fin
!!!

Je conseil de déclarer une variable string strAppPath publique et de
l'initialiser comme suit :

If Right$(App.Path, 1) <> "" Then strAppPath = App.Path & "" Else
strAppPath = App.Path

Comme ca plus de prob :
Call Shell("NotePad.exe """ & strAppPath & nomFichier & """",
vbNormalFocus)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:
"LE TROLL" a mal écrit:
x = Shell("NotePad.exe " & App.Path & nomFichier, 1)



Attention:
Cala peut ne pas fonctionner; surtout si il y a des espaces dans les
chemins (Path) qui pouraient être interprétés comme séparateurs.
Il vaut mieux entourer chaque paramètre par des guillemets (code
ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)

Cordialement,

Pascal B.


Avatar
ng
Salut,

Si par shell tu entends interpréteur de commandes windows alors tu peux
utiliser le code suivant :

Private Sub Form_Load()
'environ$("COMSPEC") renvoie la valeur de la var d'environnement COMSPEC
'qui contient le chemin de l'interpreteur de commande
'ex : sous winxp : C:WINDOWSsystem32cmd.exe
' alors que sous 9x c'est du command.com


Dim strCommand As String

'fenetre visible
Call Shell(Environ$("COMSPEC") & " /c " & strCommand, vbNormalFocus)

'invisible
Call Shell(Environ$("COMSPEC") & " /c " & strCommand, vbHide)

'si tu veux que la fenetre reste apres l'execution de la cmd,
'mets /k à la place de /c
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

chris wrote:
salut a tous,

je voudrais savoir si il est possible de passer une commande shell a
partir d'une string?


Avatar
Pascal B.
Salut NG

Effectivement j'ai oublier un petit espace :-/.
Mais en ce qui concerne les guillements, c'est effectivement plus rapide, mais pas nécessairement plus clair.
Tout le monde ne comprend pas (ou ne connaît pas) ce principe de doublement de guillemets.

Pascal B.


"ng" wrote in message news:%
| Salut,
|
| > Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)
| Plus clair et plus rapide, il suffit de doubler les guillemets :
|
| De plus tu as oublié un espace entre notepad.exe et l'argument :
|
| Call Shell("NotePad.exe """ & App.Path & nomFichier & """", vbNormalFocus)
|
| Et tjrs pareil : attention à App.Path qui ne renvoie pas tjrs un à la fin
| !!!
|
| Je conseil de déclarer une variable string strAppPath publique et de
| l'initialiser comme suit :
|
| If Right$(App.Path, 1) <> "" Then strAppPath = App.Path & "" Else
| strAppPath = App.Path
|
| Comme ca plus de prob :
| Call Shell("NotePad.exe """ & strAppPath & nomFichier & """",
| vbNormalFocus)
| --
| Nicolas G.
| FAQ VB : http://faq.vb.free.fr
| API Guide : http://www.allapi.net
| Google Groups : http://groups.google.fr/
| MZ-Tools : http://www.mztools.com/
|
| Pascal B. wrote:
| > "LE TROLL" a mal écrit:
| >> x = Shell("NotePad.exe " & App.Path & nomFichier, 1)
| >
| > Attention:
| > Cala peut ne pas fonctionner; surtout si il y a des espaces dans les
| > chemins (Path) qui pouraient être interprétés comme séparateurs.
| > Il vaut mieux entourer chaque paramètre par des guillemets (code
| > ASCII 34):
| >
| > Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)
| >
| > Cordialement,
| >
| > Pascal B.
|
|
Avatar
ng
>Tout le monde ne comprend
pas (ou ne connaît pas) ce principe de doublement de guillemets.



Justement c'est pour le faire connaitre.
De plus il est vrai que ce n'est pas forcément très clair... C'est un peu
dommage que ce ne soity pas qqch à la C++ : "Entre guillemets "Salut
!"..."

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:
Salut NG

Effectivement j'ai oublier un petit espace :-/.
Mais en ce qui concerne les guillements, c'est effectivement plus
rapide, mais pas nécessairement plus clair. Tout le monde ne comprend
pas (ou ne connaît pas) ce principe de doublement de guillemets.

Pascal B.


"ng" wrote in message
news:%
Salut,

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)


Plus clair et plus rapide, il suffit de doubler les guillemets :

De plus tu as oublié un espace entre notepad.exe et l'argument :

Call Shell("NotePad.exe """ & App.Path & nomFichier & """",
vbNormalFocus)

Et tjrs pareil : attention à App.Path qui ne renvoie pas tjrs un à
la fin !!!

Je conseil de déclarer une variable string strAppPath publique et de
l'initialiser comme suit :

If Right$(App.Path, 1) <> "" Then strAppPath = App.Path & "" Else
strAppPath = App.Path

Comme ca plus de prob :
Call Shell("NotePad.exe """ & strAppPath & nomFichier & """",
vbNormalFocus)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:
"LE TROLL" a mal écrit:
x = Shell("NotePad.exe " & App.Path & nomFichier, 1)



Attention:
Cala peut ne pas fonctionner; surtout si il y a des espaces dans les
chemins (Path) qui pouraient être interprétés comme séparateurs.
Il vaut mieux entourer chaque paramètre par des guillemets (code
ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier & Chr(34)

Cordialement,

Pascal B.






Avatar
LE TROLL
He, il demande si on peut mettre une variable, c'est sans
doute pas NotePade, c'était juste pour l'exemple...
--------

"ng" a écrit dans le message de news:
%
Salut,

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)


Plus clair et plus rapide, il suffit de doubler les
guillemets :

De plus tu as oublié un espace entre notepad.exe et
l'argument :

Call Shell("NotePad.exe """ & App.Path & nomFichier &
"""", vbNormalFocus)

Et tjrs pareil : attention à App.Path qui ne renvoie pas
tjrs un à la fin !!!

Je conseil de déclarer une variable string strAppPath
publique et de l'initialiser comme suit :

If Right$(App.Path, 1) <> "" Then strAppPath = App.Path &
"" Else strAppPath = App.Path

Comme ca plus de prob :
Call Shell("NotePad.exe """ & strAppPath & nomFichier &
"""", vbNormalFocus)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:
"LE TROLL" a mal écrit:
x = Shell("NotePad.exe " & App.Path & nomFichier, 1)



Attention:
Cala peut ne pas fonctionner; surtout si il y a des
espaces dans les
chemins (Path) qui pouraient être interprétés comme
séparateurs.
Il vaut mieux entourer chaque paramètre par des
guillemets (code
ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)

Cordialement,

Pascal B.






Avatar
Eric
Euh... et si vous utilisiez la fonction ShellExecute de l'API, vous
croyez pas que vous vous prendriez moins la tête? :)

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long

Const SW_SHOWNORMAL = 1

Private Sub Form_Load()
ShellExecute Me.hwnd, "open", App.Path & nomFichier, vbNullString,
"C:", SW_SHOWNORMAL
End Sub



LE TROLL wrote:
He, il demande si on peut mettre une variable, c'est sans
doute pas NotePade, c'était juste pour l'exemple...
--------

"ng" a écrit dans le message de news:
%

Salut,


Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)



Plus clair et plus rapide, il suffit de doubler les
guillemets :

De plus tu as oublié un espace entre notepad.exe et
l'argument :

Call Shell("NotePad.exe """ & App.Path & nomFichier &
"""", vbNormalFocus)

Et tjrs pareil : attention à App.Path qui ne renvoie pas
tjrs un à la fin !!!

Je conseil de déclarer une variable string strAppPath
publique et de l'initialiser comme suit :

If Right$(App.Path, 1) <> "" Then strAppPath = App.Path &
"" Else strAppPath = App.Path

Comme ca plus de prob :
Call Shell("NotePad.exe """ & strAppPath & nomFichier &
"""", vbNormalFocus)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:

"LE TROLL" a mal écrit:

x = Shell("NotePad.exe " & App.Path & nomFichier, 1)



Attention:
Cala peut ne pas fonctionner; surtout si il y a des
espaces dans les
chemins (Path) qui pouraient être interprétés comme
séparateurs.
Il vaut mieux entourer chaque paramètre par des
guillemets (code
ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)

Cordialement,

Pascal B.










Avatar
LE TROLL
Salut chef :o)
Tu ne reprends que mes réponses, dis donc, tu m'en veux?
Eh, le patron il a dit Shell, alors on répond sur Shell,
pas être plus royaliste que le roi :o)
-------

"Eric" a écrit dans le message de
news:
Euh... et si vous utilisiez la fonction ShellExecute de
l'API, vous croyez pas que vous vous prendriez moins la
tête? :)

Private Declare Function ShellExecute Lib "shell32.dll"
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal
lpOperation As String, ByVal lpFile As String, ByVal
lpParameters As String, ByVal lpDirectory As String, ByVal
nShowCmd As Long) As Long

Const SW_SHOWNORMAL = 1

Private Sub Form_Load()
ShellExecute Me.hwnd, "open", App.Path & nomFichier,
vbNullString, "C:", SW_SHOWNORMAL
End Sub



LE TROLL wrote:
He, il demande si on peut mettre une variable, c'est sans
doute pas NotePade, c'était juste pour l'exemple...
--------

"ng" a écrit dans le message de news:
%

Salut,


Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)



Plus clair et plus rapide, il suffit de doubler les
guillemets :

De plus tu as oublié un espace entre notepad.exe et
l'argument :

Call Shell("NotePad.exe """ & App.Path & nomFichier &
"""", vbNormalFocus)

Et tjrs pareil : attention à App.Path qui ne renvoie pas
tjrs un à la fin !!!

Je conseil de déclarer une variable string strAppPath
publique et de l'initialiser comme suit :

If Right$(App.Path, 1) <> "" Then strAppPath = App.Path
& "" Else strAppPath = App.Path

Comme ca plus de prob :
Call Shell("NotePad.exe """ & strAppPath & nomFichier &
"""", vbNormalFocus)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pascal B. wrote:

"LE TROLL" a mal écrit:

x = Shell("NotePad.exe " & App.Path & nomFichier, 1)



Attention:
Cala peut ne pas fonctionner; surtout si il y a des
espaces dans les
chemins (Path) qui pouraient être interprétés comme
séparateurs.
Il vaut mieux entourer chaque paramètre par des
guillemets (code
ASCII 34):

Shell "NotePad.exe" & Chr(34) & App.Path & nomFichier &
Chr(34)

Cordialement,

Pascal B.











1 2