Nom court d'un fichier par la commande File

Je cherche à utiliser les nouvelles commandes File et Folder.

Si je crée un objet par la commande File avec le nom court :
MyFile_o:=File(“MyFile.jpg”)
je trouve un nom court avec
MyFile_o.name -> MyFile.jpg
bien avancé…

Si je crée un objet par la commande File avec le chemin ou nom long :
MyFile_o:=File(“MyDisk/MyFolder/MyFile.jpg”)
je trouve un nom long avec
MyFile_o.name -> MyDisk/MyFolder/MyFile.jpg
pas plus avancé…

Il me semble que dans les deux cas on devrait voir le nom court ?
Ou alors ajouter une propriété .shortName ?
Il y a quelque chose qui m’échappe ? Qu’en pensez-vous ?

Vite lu, je vois :
• .fullName retourne le nom complet du fichier, extension comprise (le cas échéant).
• .name retourne le nom du fichier, sans l’extension (le cas échéant).
• .parent retourne l’objet dossier parent du fichier.
• .path retourne le chemin POSIX du fichier.

Mais du coup je ne pige pas ce que tu attends ?

: DOC

Note : Seuls les chemins absolus sont pris en charge avec la commande
Fichier. Pour plus d’informations, veuillez consulter la page Chemins
des objets fichier et dossier.

<code 4D>
MyFile_o:=File("/PACKAGE/MyFile.jpg")
MyFile_o:=File("/MyDisk/MyFolder/MyFile.jpg")
</code 4D>

: Vincent DE LACHAUX

Note : Seuls les chemins absolus sont pris en charge avec la commande
Fichier. Pour plus d’informations, veuillez consulter la page Chemins
des objets fichier et dossier.

Je comprends sans problème que le paramètre d’entrée soit un chemin absolu mais les members functions pourraient nous le découper en ajoutant une fonction .shortName() => feature request…

: Bernard ESCAICH

Je comprends sans problème que le paramètre d’entrée soit un chemin
absolu mais les members functions pourraient nous le découper en
ajoutant une fonction .shortName() => feature request…
Avec ce code :
<code 4D>
$path_t:=Convert path POSIX to system("/Users/arnaud/Desktop/Capture d’écran 2019-09-21 à 15.34.31.png")
ASSERT(Test path name($path_t)=Is a document)
$document:=File($path_t)
C_COLLECTION($grab_c)
$grab_c:=New collection()
OB GET PROPERTY NAMES($document;$prop_at)
For ($i_l;1;Size of array($prop_at))
Case of
: ($document[$prop_at{$i_l}]=Null)
$grab_c.push($prop_at{$i_l}+"=null")
: (OB Get type($document;$prop_at{$i_l})=38)
$grab_c.push($prop_at{$i_l}+"=[object]")
Else
$grab_c.push($prop_at{$i_l}+"="+String($document[$prop_at{$i_l}]))
End case
End for
SET TEXT TO PASTEBOARD($grab_c.join("\r"))
</code 4D>

… je récupère ça :
Code :
fullName=Macintosh HD/Users/arnaud/Desktop/Capture d’écran 2019-09-21 à 15.34.31.png
name=Macintosh HD/Users/arnaud/Desktop/Capture d’écran 2019-09-21 à 15.34.31
extension=.png
path=/Macintosh HD/Users/arnaud/Desktop/Capture d’écran 2019-09-21 à 15.34.31.png/
platformPath=Macintosh HD/Users/arnaud/Desktop/Capture d’écran 2019-09-21 à 15.34.31.png
original=obj
isAlias=Faux
isFolder=Faux
isFile=Vrai
parent=null
modificationDate=00/00/00
modificationTime=0
creationDate=00/00/00
creationTime=0
size=0
exists=Faux
isWritable=Faux
hidden=Faux

Je ne m’attendais pas aux valeurs de : platformPath, parent, size, creation/modification, exists, isWritable.
Qu’est-ce qui m’échappe ?

Bonjour,

Par défaut la commande File/Folder s’attend à avoir comme premier paramètre un chemin posix.
Si le chemin donné est un chemin de type système, alors il faut mettre comme second paramètre “fk platform path”.

Voir la documentation sur “Platform-specific syntax”:
https://doc.4d.com/4Dv17R6/4D/17-R6/File-and-folder-object-pathnames.300-4312016.en.html

Bonjour Guillaume,
merci et au temps pour moi. Je fais si souvent cette conversion posix vers système que c’est devenu un réflexe ! :oops:

astuce sur mac pour récupérer un chemin posix depuis le finder : sélectionner le fichier puis copier avec alt enfoncée.