Ciao. C'è un modo per fare in modo che uno script cerchi nel computer dell'utente un determinato nome file e restituisca il percorso? Sto usando un Mac e JMP14.3 atm. Sono interessato a creare un componente aggiuntivo che chiama un altro script sul computer dell'utente, ma non saprò dove l'utente ha memorizzato lo script.
Nel componente aggiuntivo, sto pensando a qualcosa del genere:
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 parte questo, sono senza idee. Qualcuno ha qualche suggerimento? Grazie.
Se è necessario cercare l'intero disco, è probabile che si desideri sfruttare qualsiasi indicizzazione già eseguita dal sistema operativo, cosa che io pensare è possibile usando 'trova' nel terminale.
find / -name abc.dmg
È possibile chiamare questo utilizzando Run Program. Sto indovinando il percorso del file per trovare e la sintassi, ma la chiamata potrebbe essere simile a questa:
Run Program(
Executable( "/usr/bin/find"),
options( {"/ -name abc.dmg"} )
);Alcune altre cose da considerare:
- Potresti includere lo script nel tuo componente aggiuntivo?
- Questo probabilmente sarà lento, sarebbe più veloce chiedere semplicemente all'utente di aprire il file?
- Se l'utente seleziona il file, è possibile salvare il percorso e non chiedere nelle successive esecuzioni oppure copiare il file nella cartella del componente aggiuntivo.
Grazie per il suggerimento ih. Ho esaminato questo, ma mi dispiace dire che non sono abbastanza ben informato sul comando Esegui programma per farlo funzionare. A prima vista, sembra richiedere un file effettivo nel campo "Eseguibile", anziché solo una stringa. Questo per me sfugge in un territorio sconosciuto.
Ho creato un elemento della lista dei desideri correlato a questo: È possibile avere un componente aggiuntivo per cercare uno script ed eseguirlo?
Ho apprezzato le domande alla fine della tua risposta e ho cercato di rispondere a tali domande in questo post della lista dei desideri.
Grazie ancora per il tuo aiuto.