Salut. Existe-t-il un moyen pour qu'un script recherche sur l'ordinateur de l'utilisateur un nom de fichier donné et renvoie le chemin? Im utilisant un Mac et JMP14.3 atm. Je souhaite créer un complément qui appelle un autre script sur l'ordinateur de l'utilisateur, mais je ne sais pas où l'utilisateur a stocké le script.
Dans le complément, je pense à quelque chose comme ceci:
y = Files In Directory("$HOME", "recursive"); //Returns {}
y = Files In Directory("$HOME", "Recursive"); //Returns {}
y = Files In Directory("$HOME", recursive); //Returns {}
y = Files In Directory("$HOME", Recursive); //Returns {}
y = Files In Directory("$HOME", Recursive(1)); //Returns {}
//All options above just return {}. I'm curious if this is unique to my setup (Mac, JMP14.3).
//Add-in code
path = [command or function to search for "myscript.jsl" on user's computer and return a path];
Include(path, New Context);
//Things I've explored:
//Not certain what the "search" option does, but seemed worth a go.
//This only returns my default directory with "myscript.jsl" appended
//(even though there is no such file in that location)
path = ConvertFilePath("myscript.jsl", search);
//There's also this, but same result as above:
Set File Search Path("$HOME/");
path = ConvertFilePath("myscript.jsl", search);
//As a last resort, I looked at this, thinking maybe if I could get a list of all files,
//I could then search the list for myscript.jsl. Unfortunately I cannot get the "recursive"
//option to work on my machine (Mac, JMP14.3). I imagine this would be a very slow method
//though as there are 1000s of files in a typical user's home directory.
A part ça, je suis à court d'idées. Est-ce que quelqu'un a des suggestions? Merci.
Si vous devez rechercher l'intégralité du lecteur, vous souhaiterez probablement tirer parti de toute indexation que le système d'exploitation a déjà effectuée, ce que je pense est possible en utilisant 'find' dans le terminal.
find / -name abc.dmg
Vous pouvez appeler cela en utilisant Run Program. Je devine le chemin du fichier pour trouver et la syntaxe, mais l'appel pourrait ressembler à ceci:
Run Program(
Executable( "/usr/bin/find"),
options( {"/ -name abc.dmg"} )
);Quelques autres choses à considérer:
- Pourriez-vous inclure le script dans votre complément?
- Cela va probablement être lent, serait-il plus rapide de simplement demander à l'utilisateur d'ouvrir le fichier?
- Si l'utilisateur sélectionne le fichier, vous pouvez enregistrer le chemin d'accès et ne pas demander lors des exécutions suivantes, ou vous pouvez copier le fichier dans le dossier du complément.
Merci pour la suggestion ih. J'ai examiné la question, mais je regrette de dire que je ne suis pas vraiment suffisamment informé sur la commande Exécuter le programme pour que cela fonctionne. À première vue, il semble nécessiter un fichier réel dans le champ "Exécutable", plutôt qu'une simple chaîne. Cela s'éloigne malheureusement en territoire inconnu pour moi.
J'ai créé un élément de liste de souhaits lié à ceci: Possible d'avoir un complément pour rechercher un script et l'exécuter?
J'ai apprécié les questions à la fin de votre réponse et j'ai essayé de répondre à ces questions dans cet article de liste de souhaits.
Merci encore pour votre aide.