Chemin DOS

Résolu
bbor99
Messages postés
34
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
14 avril 2010
- 23 mai 2008 à 14:45
bbor99
Messages postés
34
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
14 avril 2010
- 26 mai 2008 à 08:19
Salut,

Je cherche à transformer le chemin d'un fichier de type :
C:\Program Files\Microsoft Office\Office\excel.exe

en :
C:\Progra~1\Micros~2\Office\excel.exe
Ce chemin on le retrouve avec la commande "dir /x"

Merci
A+

6 réponses

jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
24 mai 2008 à 09:26
Bonjour,

Si tu tiens tellement à ton chemin court, utilise donc la fonction (qui te le retourne) GetShortPathName de la librairie kernel32 de l'Api de Windows...
exemple :

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Public Function GetShortPath(strFileName As String) As String
    Dim lngRes As Long, strPath As String
    strPath = String$(165, 0)
    lngRes = GetShortPathName(strFileName, strPath, 164)
    GetShortPath = Left$(strPath, lngRes)
End Function



Private Sub Command1_Click()
  MsgBox GetShortPath("c:\Program Files")
End Sub


Attention : si tu es en VB.Net ==>> type en Integer et non en Long
3
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
23 mai 2008 à 15:40
Salut
Oui, ça doit exister mais je connais pas.
Par contre, si tu as des problèmes avec les noms de répertoires longs, pense à utiliser des " pour les encadrer.
Où es-tu embêté avec les noms longs ? quelle commande depuis quel langage ?

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
23 mai 2008 à 15:43
Re
Comme pour ta précédente question, si tu nous disais ce que tu veux faire, tu n'aurais pas besoin de faire ce genre de recherche.
Par exemple avec ShellExecute qui lancera seul l'exécutable associé à l'extension du fichier de données que tu lui fournis
0
bbor99
Messages postés
34
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
14 avril 2010

23 mai 2008 à 16:19
En fait, avec mon soft VB, je doit aller chercher des chemins de soft (Excel, Word, Acrobat ...) pour creer un fichier BAT avec des variable genre:
set cmd_excel=C:\Progra~1\Micros~2\Office\excel.exe
Ce fichier BAT doit démarrer un soft qui gère une base de donnée de fichiers.
Et le soft demarre Excel avec la variable %cmd_excel%
Je ne crois pas qu'il y ait une autre solution à mon problème
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
23 mai 2008 à 19:49
Salut,

ajoute ce qui suit dans ton batch :

for /r c:\ %%d in (*excel.exe) do set excelpath=%%d

celle ligne recherche excel.exe dans le disque c:\ et met le resultat dans la variable excelpath

Attention : si tu as plus d'un excel.exe dans la zone de recherche (pour l'exemple le disque c:\) seul le dernier trouvé sera pris en compte

Attention (bis) : le jocker * devant excel.exe est  O B L I G A T O I R E !

Autre remarque c'est quoi cette idee de vouloir limiter la longueur des noms de repertoires ? Il y a longtemps que le dos prend en compte les noms de repertoires de plus de 8 characteres. Au moins depuis Win98

A+
0
bbor99
Messages postés
34
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
14 avril 2010

26 mai 2008 à 08:19
Merci.
Et en plus j'ai déja utilisé cette fonction avec le langage de prog RapidQ.

Merci
A+
0