bbor99
Messages postés34Date d'inscriptionlundi 29 janvier 2007StatutMembreDernière intervention14 avril 2010
-
23 mai 2008 à 14:45
bbor99
Messages postés34Date d'inscriptionlundi 29 janvier 2007StatutMembreDernière intervention14 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"
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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
bbor99
Messages postés34Date d'inscriptionlundi 29 janvier 2007StatutMembreDernière intervention14 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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