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 7666 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 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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 15
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
Rejoignez-nous