OVH Cloud OVH Cloud

probleme verifier si un fichier existe

11 réponses
Avatar
Joseph Oget
Bonjour a tous.

Voila mon probleme:

J'ai un boutton qui me lance une commande et execute un script VBS avec
WSCRIPT.EXE. Cool, ca marche bien.

Seulement, j'ai voulu ajouter l'option d'attraper une erreure, par example
si le fichier a executer n'est pas trouve.

J'ai donc fait ceci: un Menu qui se nomme: JVM et qui lance cette Routine:

Private Sub JVM_Clicked(sender As object, e As System.EventArgs)
Dim StrPathToScript As String = """" & strPath &
"Scripts\vbs_Files\JVM.vbs" & """"
Dim strCmd As String = "C:\WINNT\system32\WScript.exe "
MessageBox.Show( StrPathToScript )
MessageBox.Show( CBool (File.Exists( StrPathToScript ) ) ) '
Toujour NON
If File.Exists( StrPathToScript ) Then
MessageBox.Show( StrPathToScript )
Else
MessageBox.Show( " Le fichier ne peut etre
trouve!" ) ' Affiche ce message bien que le fichier existe!
' Exit Sub
End If
If MessageBox.Show ("This is going to install Sun Java Virtual
Machine (JVM)" & _
ControlChars.CrLf & ControlChars.CrLf
& _
" Please click on Yes to Continue?",
"My Application", _
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) _
= DialogResult.No Then
Exit Sub
End If
Process.Start( strCmd, StrPathToScript ) ' Lance le Script
End Sub

strPath est une Variable qui est retournee par cette function, qui me donne
la location de l'Assembly:

Dim strPath As String = AppPath & "\"
Public Function AppPath() As String
Return
System.IO.Path.GetDirectoryName(Reflection.Assembly.GetEntryAssembly().Location)
End Function

Moi comprends pas, on m'a parle de permissions mais la j'y comprends rien.

merci d'avance.

Joseph

10 réponses

1 2
Avatar
Patrice
Quel est le chemin testé ? Teste simplement avec quelques chose du style :

MsgBox(File.Exists("Nom en dur")) si c'est cela qui pose problème. Vu que
l'assembly est là tu peux aussi l'utiliser comme cobaye. Si cela ne va pas,
teste un fichier dans un répertoire plus haut par exemple...

--
Patrice

"Joseph Oget" a écrit dans le message de
news:
Bonjour a tous.

Voila mon probleme:

J'ai un boutton qui me lance une commande et execute un script VBS avec
WSCRIPT.EXE. Cool, ca marche bien.

Seulement, j'ai voulu ajouter l'option d'attraper une erreure, par example
si le fichier a executer n'est pas trouve.

J'ai donc fait ceci: un Menu qui se nomme: JVM et qui lance cette Routine:

Private Sub JVM_Clicked(sender As object, e As System.EventArgs)
Dim StrPathToScript As String = """" & strPath &
"Scriptsvbs_FilesJVM.vbs" & """"
Dim strCmd As String = "C:WINNTsystem32WScript.exe "
MessageBox.Show( StrPathToScript )
MessageBox.Show( CBool (File.Exists( StrPathToScript ) ) ) '
Toujour NON
If File.Exists( StrPathToScript ) Then
MessageBox.Show( StrPathToScript )
Else
MessageBox.Show( " Le fichier ne peut etre
trouve!" ) ' Affiche ce message bien que le fichier existe!
' Exit Sub
End If
If MessageBox.Show ("This is going to install Sun Java Virtual
Machine (JVM)" & _
ControlChars.CrLf &


ControlChars.CrLf
& _
" Please click on Yes to


Continue?",
"My Application", _
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) _
= DialogResult.No Then
Exit Sub
End If
Process.Start( strCmd, StrPathToScript ) ' Lance le Script
End Sub

strPath est une Variable qui est retournee par cette function, qui me


donne
la location de l'Assembly:

Dim strPath As String = AppPath & ""
Public Function AppPath() As String
Return



System.IO.Path.GetDirectoryName(Reflection.Assembly.GetEntryAssembly().Locat
ion)
End Function

Moi comprends pas, on m'a parle de permissions mais la j'y comprends rien.

merci d'avance.

Joseph




Avatar
Patrick Philippot
Bonjour,

Ça fonctionnera beaucoup mieux si vous retirez les quotes de part et
d'autre du nom. Pourquoi ajouter ces gadgets inutiles :-) ?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Joseph Oget
MsgBox(("Nom en dur")) retourn bienle nom et le chemin corrects et le
fichier est ensuite executé.

MsgBox(File.Exists("Nom en dur")) est toujours Faux, C ca mon probleme,
tout est bon mais si j'utilise un If fichier exist alors execute C la ou ca
marchera pas, bien que le fichier soit la ou il est suppose etre..

bizarre.

Joseph
"Patrice" wrote in message
news:%
Quel est le chemin testé ? Teste simplement avec quelques chose du style :

MsgBox(File.Exists("Nom en dur")) si c'est cela qui pose problème. Vu que
l'assembly est là tu peux aussi l'utiliser comme cobaye. Si cela ne va
pas,
teste un fichier dans un répertoire plus haut par exemple...

--
Patrice

"Joseph Oget" a écrit dans le message de
news:
Bonjour a tous.

Voila mon probleme:

J'ai un boutton qui me lance une commande et execute un script VBS avec
WSCRIPT.EXE. Cool, ca marche bien.

Seulement, j'ai voulu ajouter l'option d'attraper une erreure, par
example
si le fichier a executer n'est pas trouve.

J'ai donc fait ceci: un Menu qui se nomme: JVM et qui lance cette
Routine:

Private Sub JVM_Clicked(sender As object, e As System.EventArgs)
Dim StrPathToScript As String = """" & strPath &
"Scriptsvbs_FilesJVM.vbs" & """"
Dim strCmd As String = "C:WINNTsystem32WScript.exe "
MessageBox.Show( StrPathToScript )
MessageBox.Show( CBool (File.Exists( StrPathToScript ) ) ) '
Toujour NON
If File.Exists( StrPathToScript ) Then
MessageBox.Show( StrPathToScript )
Else
MessageBox.Show( " Le fichier ne peut etre
trouve!" ) ' Affiche ce message bien que le fichier existe!
' Exit Sub
End If
If MessageBox.Show ("This is going to install Sun Java Virtual
Machine (JVM)" & _
ControlChars.CrLf &


ControlChars.CrLf
& _
" Please click on Yes to


Continue?",
"My Application", _
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) _
= DialogResult.No Then
Exit Sub
End If
Process.Start( strCmd, StrPathToScript ) ' Lance le Script
End Sub

strPath est une Variable qui est retournee par cette function, qui me


donne
la location de l'Assembly:

Dim strPath As String = AppPath & ""
Public Function AppPath() As String
Return



System.IO.Path.GetDirectoryName(Reflection.Assembly.GetEntryAssembly().Locat
ion)
End Function

Moi comprends pas, on m'a parle de permissions mais la j'y comprends
rien.

merci d'avance.

Joseph








Avatar
Joseph Oget
Gadget? connait pas. Il ya des espaces dans le chemin, voila pourqui les
gadgets.

"Patrick Philippot" wrote in message
news:%
Bonjour,

Ça fonctionnera beaucoup mieux si vous retirez les quotes de part et
d'autre du nom. Pourquoi ajouter ces gadgets inutiles :-) ?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Patrick Philippot
Joseph Oget wrote:
Gadget? connait pas. Il ya des espaces dans le chemin, voila pourqui
les gadgets.



Avez vous essayé de supprimer ces quotes oui ou non? Si vous les retirez
de votre code, cela fonctionne, si vous les gardez, cela ne fonctionne
pas. J'ai testé et je me suis même donné la peine de construire un
projet avec votre code et vos noms de fichier pour pvir où était
l'erreur. Elle est apparue immédiatement :-) .

Vous confondez 2 choses: les quotes sont nécessaires quand on passe un
nom de fichier contenant des espaces **sur une ligne de commande**,
jamais quand on passe ce nom de fichier en argument à une API ou une
méthode.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Joseph Oget
Patrick,

Merci de votre aide, je l'apprecie, veuillez pardonner mon manque de
courtoisie.

Joseph
"Patrick Philippot" wrote in message
news:
Joseph Oget wrote:
Gadget? connait pas. Il ya des espaces dans le chemin, voila pourqui
les gadgets.



Avez vous essayé de supprimer ces quotes oui ou non? Si vous les retirez
de votre code, cela fonctionne, si vous les gardez, cela ne fonctionne
pas. J'ai testé et je me suis même donné la peine de construire un projet
avec votre code et vos noms de fichier pour pvir où était l'erreur. Elle
est apparue immédiatement :-) .

Vous confondez 2 choses: les quotes sont nécessaires quand on passe un nom
de fichier contenant des espaces **sur une ligne de commande**, jamais
quand on passe ce nom de fichier en argument à une API ou une méthode.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Joseph Oget
Partick,

La raison des double quotes est dans votre reponse et sans doute due a mon
ignorance:

Le Click appelle un fichier type vbs auquel je passe des arguments, donc en
effet j'ai utilise la meme syntaxe que j' utilise lorsque le lance ce script
a partir d'un fichier batch, ce que l'on est oblige de faire due aux regles
de securite de ma companie.

Par contre, suivant votre reponse, je pourrais effectivement 'tester' pour
la presence du fichier lui-meme (sans les double ""), et "ensuite" si il est
trouve l'appeler en lui passant les arguments requis.

On s'est mal comprit et je me suis mal exprime, merci encore de votre aide.

Joseph
"Patrick Philippot" wrote in message
news:
Joseph Oget wrote:
Gadget? connait pas. Il ya des espaces dans le chemin, voila pourqui
les gadgets.



Avez vous essayé de supprimer ces quotes oui ou non? Si vous les retirez
de votre code, cela fonctionne, si vous les gardez, cela ne fonctionne
pas. J'ai testé et je me suis même donné la peine de construire un projet
avec votre code et vos noms de fichier pour pvir où était l'erreur. Elle
est apparue immédiatement :-) .

Vous confondez 2 choses: les quotes sont nécessaires quand on passe un nom
de fichier contenant des espaces **sur une ligne de commande**, jamais
quand on passe ce nom de fichier en argument à une API ou une méthode.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Patrice
Donc le nom n'est pas bon...

--
Patrice

"Joseph Oget" a écrit dans le message de
news:%
MsgBox(("Nom en dur")) retourn bienle nom et le chemin corrects et le
fichier est ensuite executé.

MsgBox(File.Exists("Nom en dur")) est toujours Faux, C ca mon probleme,
tout est bon mais si j'utilise un If fichier exist alors execute C la ou


ca
marchera pas, bien que le fichier soit la ou il est suppose etre..

bizarre.

Joseph
"Patrice" wrote in message
news:%
> Quel est le chemin testé ? Teste simplement avec quelques chose du style


:
>
> MsgBox(File.Exists("Nom en dur")) si c'est cela qui pose problème. Vu


que
> l'assembly est là tu peux aussi l'utiliser comme cobaye. Si cela ne va
> pas,
> teste un fichier dans un répertoire plus haut par exemple...
>
> --
> Patrice
>
> "Joseph Oget" a écrit dans le message de
> news:
>> Bonjour a tous.
>>
>> Voila mon probleme:
>>
>> J'ai un boutton qui me lance une commande et execute un script VBS avec
>> WSCRIPT.EXE. Cool, ca marche bien.
>>
>> Seulement, j'ai voulu ajouter l'option d'attraper une erreure, par
>> example
>> si le fichier a executer n'est pas trouve.
>>
>> J'ai donc fait ceci: un Menu qui se nomme: JVM et qui lance cette
>> Routine:
>>
>> Private Sub JVM_Clicked(sender As object, e As System.EventArgs)
>> Dim StrPathToScript As String = """" & strPath &
>> "Scriptsvbs_FilesJVM.vbs" & """"
>> Dim strCmd As String = "C:WINNTsystem32WScript.exe "
>> MessageBox.Show( StrPathToScript )
>> MessageBox.Show( CBool (File.Exists( StrPathToScript ) ) ) '
>> Toujour NON
>> If File.Exists( StrPathToScript ) Then
>> MessageBox.Show( StrPathToScript )
>> Else
>> MessageBox.Show( " Le fichier ne peut etre
>> trouve!" ) ' Affiche ce message bien que le fichier existe!
>> ' Exit Sub
>> End If
>> If MessageBox.Show ("This is going to install Sun Java Virtual
>> Machine (JVM)" & _
>> ControlChars.CrLf &
> ControlChars.CrLf
>> & _
>> " Please click on Yes to
> Continue?",
>> "My Application", _
>> MessageBoxButtons.YesNo,
>> MessageBoxIcon.Question) _
>> = DialogResult.No Then
>> Exit Sub
>> End If
>> Process.Start( strCmd, StrPathToScript ) ' Lance le


Script
>> End Sub
>>
>> strPath est une Variable qui est retournee par cette function, qui me
> donne
>> la location de l'Assembly:
>>
>> Dim strPath As String = AppPath & ""
>> Public Function AppPath() As String
>> Return
>>
>


System.IO.Path.GetDirectoryName(Reflection.Assembly.GetEntryAssembly().Locat
> ion)
>> End Function
>>
>> Moi comprends pas, on m'a parle de permissions mais la j'y comprends
>> rien.
>>
>> merci d'avance.
>>
>> Joseph
>>
>>
>
>




Avatar
Patrick Philippot
Joseph Oget wrote:
Merci de votre aide, je l'apprecie, veuillez pardonner mon manque de
courtoisie.



Pas de quoi. On a tous nos humeurs. Tant qu'elles ne persistent pas,
tout va bien :-) .

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Joseph Oget
Ou je suis completement con ou alors...

bien sur que le nom est bon bordel de dieu:

>> J'ai un boutton qui me lance une commande et execute un script VBS
>> avec
>> WSCRIPT.EXE. Cool, ca marche bien.





trop difficile a comprendre poulette, trou du cul

"Patrice" wrote in message
news:
Donc le nom n'est pas bon...

--
Patrice

"Joseph Oget" a écrit dans le message de
news:%
MsgBox(("Nom en dur")) retourn bienle nom et le chemin corrects et le
fichier est ensuite executé.

MsgBox(File.Exists("Nom en dur")) est toujours Faux, C ca mon probleme,
tout est bon mais si j'utilise un If fichier exist alors execute C la ou


ca
marchera pas, bien que le fichier soit la ou il est suppose etre..

bizarre.

Joseph
"Patrice" wrote in message
news:%
> Quel est le chemin testé ? Teste simplement avec quelques chose du
> style


:
>
> MsgBox(File.Exists("Nom en dur")) si c'est cela qui pose problème. Vu


que
> l'assembly est là tu peux aussi l'utiliser comme cobaye. Si cela ne va
> pas,
> teste un fichier dans un répertoire plus haut par exemple...
>
> --
> Patrice
>
> "Joseph Oget" a écrit dans le message de
> news:
>> Bonjour a tous.
>>
>> Voila mon probleme:
>>
>> J'ai un boutton qui me lance une commande et execute un script VBS
>> avec
>> WSCRIPT.EXE. Cool, ca marche bien.
>>
>> Seulement, j'ai voulu ajouter l'option d'attraper une erreure, par
>> example
>> si le fichier a executer n'est pas trouve.
>>
>> J'ai donc fait ceci: un Menu qui se nomme: JVM et qui lance cette
>> Routine:
>>
>> Private Sub JVM_Clicked(sender As object, e As System.EventArgs)
>> Dim StrPathToScript As String = """" & strPath &
>> "Scriptsvbs_FilesJVM.vbs" & """"
>> Dim strCmd As String = "C:WINNTsystem32WScript.exe "
>> MessageBox.Show( StrPathToScript )
>> MessageBox.Show( CBool (File.Exists( StrPathToScript ) ) ) '
>> Toujour NON
>> If File.Exists( StrPathToScript ) Then
>> MessageBox.Show( StrPathToScript )
>> Else
>> MessageBox.Show( " Le fichier ne peut etre
>> trouve!" ) ' Affiche ce message bien que le fichier existe!
>> ' Exit Sub
>> End If
>> If MessageBox.Show ("This is going to install Sun Java
>> Virtual
>> Machine (JVM)" & _
>> ControlChars.CrLf &
> ControlChars.CrLf
>> & _
>> " Please click on Yes to
> Continue?",
>> "My Application", _
>> MessageBoxButtons.YesNo,
>> MessageBoxIcon.Question) _
>> = DialogResult.No Then
>> Exit Sub
>> End If
>> Process.Start( strCmd, StrPathToScript ) ' Lance le


Script
>> End Sub
>>
>> strPath est une Variable qui est retournee par cette function, qui me
> donne
>> la location de l'Assembly:
>>
>> Dim strPath As String = AppPath & ""
>> Public Function AppPath() As String
>> Return
>>
>


System.IO.Path.GetDirectoryName(Reflection.Assembly.GetEntryAssembly().Locat
> ion)
>> End Function
>>
>> Moi comprends pas, on m'a parle de permissions mais la j'y comprends
>> rien.
>>
>> merci d'avance.
>>
>> Joseph
>>
>>
>
>








1 2