Page 1 sur 1

[R] Chemin d'éxécution

Posté : mar. 02 déc. 2014 11:17
par flammedemon
Bonjour,

Je cherche à trouver le chemin d'execution de mon programme :

Ex : c:\partage\installeur
Ex2: \\postedetoto\partage\installeur\
Ex3 : x:\partage\installeur\


J'utilise la commande @ScriptDir qui me donne satisfaction, mais je veux l'utiliser pour trouver le répertoire en dessous (dans l'exemple partage, le script étant lancé depuis le dossier installeur).

J'ai tenté sa (sans succès) :

Code : Tout sélectionner

(@ScriptDir & "\..\")
et sa

Code : Tout sélectionner

(@ScriptDir & "..\")
et puis sa

Code : Tout sélectionner

(@ScriptDir & "\..")
et encore sa

Code : Tout sélectionner

(@ScriptDir & "..")
Je ne saisi pas comment je peux le faire, je suis sur que c'est bête mais malheureusement j'ai pas trouvé.

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 11:26
par Faco
Salut,
pas tout compris mais je répond quand même ^^.

pour moi tu veux le dossier juste supérieur.
ex : "\\postedetoto\partage\installeur\" => "installeur"

Dans ce cas, essaie avec StringSplit et @ScriptDir

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 11:31
par flammedemon
Faco a écrit :Salut,
pas tout compris mais je répond quand même ^^.

pour moi tu veux le dossier juste supérieur.
ex : "\\postedetoto\partage\installeur\" => "installeur"

Dans ce cas, essaie avec StringSplit et @ScriptDir
En faite le script es lancer dans installeur avec @ScriptDir je vois bien ceci du coup (c:\partage\installeur)
Moi ce que je souhaite c'est trouver c:\partage le répertoire du dessous !

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 11:37
par DimVar
Bonjour,

Qu'entendez-vous par "répertoire en dessous" ? La notion de parent/enfant vous est elle familière ? (éventuellement aval/amont)

Ex:
C:\dossier1\dossier2\
Le "dossier1" est le dossier parent de "dossier2". Le "dossier2" est le dossier enfant.

La chaine (string) renvoyée par @scriptdir est effectivement gérable (split) avec les fonctions précisées par Faco. Etudier la fonction "stringsplit".

StringSplit (@ScriptDir,"\") ; S'il s'agit d'un chemin local
StringSplit (@ScriptDir,"/") ; S'il s'agit d'un chemin reseau


Cdlt, Dimvar.

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 11:50
par Clampu
Je pense qu'il voulait dire "dessus" et pas "dessous"
Si c'est le cas, tu peux utiliser

Code : Tout sélectionner

StringSplit(@ScriptDir, "\")[StringSplit(@ScriptDir, "\")[0]]

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 12:34
par flammedemon
Clampu a écrit :Je pense qu'il voulait dire "dessus" et pas "dessous"
Si c'est le cas, tu peux utiliser

Code : Tout sélectionner

StringSplit(@ScriptDir, "\")[StringSplit(@ScriptDir, "\")[0]]
Merci de vos réponses Facon, DimVar et Clampu mais il supprime tout ce que je veux récupéré justement. Je veux effectivement le dossier parent.

Petite question autre si c'est un lecteur mappé il le considère en tant que chemin local ou réseau ?

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 13:00
par walkson
Bonjour,
Pour remonter d'un ou de deux niveaux:

Code : Tout sélectionner

Msgbox (0, @ScriptDir, StringRegExpReplace(@ScriptDir , '(.+\\)[^\\]+', "$1") )
Msgbox (0, @ScriptDir, StringRegExpReplace(@ScriptDir , '(.+\\)(.+\\)[^\\]+', "$1") )

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 13:10
par flammedemon
walkson a écrit :Bonjour,
Pour remonter d'un ou de deux niveaux:

Code : Tout sélectionner

Msgbox (0, @ScriptDir, StringRegExpReplace(@ScriptDir , '(.+\\)[^\\]+', "$1") )
Msgbox (0, @ScriptDir, StringRegExpReplace(@ScriptDir , '(.+\\)(.+\\)[^\\]+', "$1") )
C'est exactement sa :)
Merci à toi

Re: [..] Chemin d'éxécution

Posté : mar. 02 déc. 2014 13:49
par DimVar
flammedemon a écrit :Petite question autre si c'est un lecteur mappé il le considère en tant que chemin local ou réseau ?
Lecteur local (c'est l'un des intérêt du mappage).

Cdlt, Dimvar.

Re: [R] Chemin d'éxécution

Posté : mar. 02 déc. 2014 13:52
par jguinch
Pour choisir le nombre de niveaux, tu peux faire comme ça (remplacer "1" par le nombre de niveaux à remonter) :

Code : Tout sélectionner

ConsoleWrite( StringRegExpReplace(@ScriptDir, "(\\[^\\]+){1}$", "") )
Sinon, tu peux aussi passer par _PathFull :

Code : Tout sélectionner

#include <File.au3>
ConsoleWrite( _PathFull(@ScriptDir & "\.." ) )