Chemin dans un streamwriter

Résolu
ben008 Messages postés 16 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 31 mars 2010 - 3 févr. 2010 à 11:31
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 3 févr. 2010 à 15:38
Bonjour a tous.

Tout d'abord merci a ceux qui liront ce post.
J'ai un petit souci d'interprétation de chemin par une instance streamwriter :
Dim MonStreamWriter2 As StreamWriter = New StreamWriter("%systemdrive%\admin.bat", append:=False)


Le problème est qu'il interprète le chemin a partir du dossier dans lequel il est exécuté.
Exemple :
Si mon appli se trouve dans X:\toto
il va me dire qu'il ne trouve pas le chemin "X:\toto\%systemdrive%\admin.bat"
En revanche j'ai fait le test ou j'ai remplacé le chemin %systemdrive%\admin.bat par C:\admin.bat et la le chemin est bien compris.

Savez vous comment résoudre ce problème?
Merci d'avance.

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 févr. 2010 à 12:18
Salut
Que penses-tu de ça :
        Dim sChemin As String = Environment.GetFolderPath(Environment.SpecialFolder.System)
        Dim sDisque As String = Path.GetPathRoot(sChemin)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
3 févr. 2010 à 12:03
Devrait être :
Dim MonStreamWriter2 As StreamWriter = New StreamWriter(%systemdrive% & "\admin.bat", append:=False)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ben008 Messages postés 16 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 31 mars 2010
3 févr. 2010 à 14:00
Merci cela fonctionne maintenant :

Dim sChemin As String = Environment.GetFolderPath(Environment.SpecialFolder.System)
Dim sDisque As String = Path.GetPathRoot(sChemin)
Dim MonStreamWriter2 As StreamWriter = New StreamWriter(sDisque & "\admin.bat", append:=False)


Par contre ton code ne fonctionne pas ucfoutu :

Il me reste donc une question :
Pourquoi n'interprete t'il pas la variable systeme?
Je l'ai utilisé par la suite comme par exemple :
monStreamWriter.WriteLine("call " & Chr(34) & "%systemdrive%\fin.bat" & Chr(34))

Et cela ne pose aucun probleme.

Merci de vos reponses.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 févr. 2010 à 15:38
Oui, c'est normal car la commande DOS que tu veux lancer ne reconnait pas les paramètres avec espaces.
Il faut, comme tu l'as fait, ajouter des " pour délimiter les chemins longs.
Autre syntaxe possible : WriteLine("call ""%systemdrive%\fin.bat""")
où les " sont doubler pour qu'il n'en résulte qu'un seul après interprétation de VB
0
Rejoignez-nous