Chemin dans un streamwriter

Résolu
Signaler
Messages postés
16
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
16
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
31 mars 2010

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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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