Je rencontre un problème particulier avec un script plus important que j'écris. J'essaie de renommer tous les fichiers dans un dossier avec un préfixe de "temp_" et en même temps de garder l'alias de ce fichier toujours accessible depuis AppleScript une fois que le préfixe a été ajouté au fichier. Le code suivant fonctionne sur CERTAINS machines mais pas sur d'autres. Je l'ai essayé sur un MBP de 2018 tournant sous 10.13, un Mac Mini de 2012 tournant sous 10.13, et un iMac de 2015 tournant sous 10.13 et 10.14. L'iMac est la seule machine ayant un problème avec ce code :
tell application "Finder"
set theSelection to the selection -- vous devez donc avoir un dossier avec des fichiers sélectionnés dans Finder avant d'exécuter ce code.
set theFiles to the files of (item 1 of theSelection) -- obtenir les fichiers
Le code échoue sur CERTAINES machines lorsque j'essaie de convertir l'alias en un chemin posix. Sur les machines sur lesquelles ce script fonctionne, le test display dialog liste l'alias du fichier avec le nouveau nom. Ainsi, foo.txt devient temp_foo.txt. Sur les machines où le script échoue, le display dialog revient juste avec foo.txt comme nom de fichier.
Sur la machine sur laquelle cela échoue, le fichier sera renommé temp_foo.txt comme il se doit, mais l'alias ne se met jamais à jour, il continue donc de penser que le fichier s'appelle juste foo.txt. Sur les machines où le script échoue, la dernière commande pour définir la variable sur le chemin posix de l'alias échoue car l'alias est incorrect étant donné qu'il pointe toujours vers l'ancien nom de fichier.
Si nécessaire, je vais simplement renommer tous les fichiers dans une boucle, puis revenir pour obtenir les chemins posix dans une autre boucle, car en faisant un nouveau
set theTempFiles to files of (item 1 of theSelection)
Devrait obtenir une nouvelle liste des fichiers, maintenant avec leur préfixe "temp_". Mais cela me dérange de mettre une boucle répétée que je ne pense pas vraiment nécessaire puisque le code fonctionne BIEN sur certaines machines.
Qui peut m'aider à rendre mon code fonctionne correctement, et qui peut le faire échouer ? J'aimerais juste voir à quel point cela pose problème. Ce serait aussi bien si quelqu'un pouvait me dire si je fais quelque chose de terriblement mauvais dans mon code, et c'est pourquoi j'obtiens des résultats imprévisibles.
0 votes
Pourquoi ne pas supprimer l'alias, renommer le fichier d'origine, puis créer un nouvel alias en utilisant le nom de fichier correct ?
0 votes
Il ne s'agit pas d'un véritable alias tel que vous le verriez dans le système de fichiers. En AppleScript, il existe plusieurs façons de référencer des fichiers, et l'alias en est l'une. Pas sûr de la meilleure façon de le décrire. Donc, là où le script échoue, c'est en essayant de convertir cet "alias" en un chemin posix, mais l'alias (référence au fichier) n'a pas eu le nom du fichier mis à jour dans la référence elle-même. Ainsi, l'"alias" fait toujours référence à l'ancien nom du fichier.
0 votes
Laissez-moi deviner - la machine Mojave est celle avec le problème? Un
alias
est censé être une référence au fichier qui ne changera pas même s'il est déplacé ou renommé, mais il semble qu'il se soit cassé quelque part. Si vous allez finalement utiliser des chemins POSIX, vous pourriez envisager d'utiliser NSURL via quelque AppleScriptObjC.0 votes
Bien, l'une des machines est une machine 10.13 qui rencontre des problèmes. Je viens d'essayer le script sur 3 machines différentes en 10.12 et il a fonctionné sur toutes. Mais j'ai une machine virtuelle sur laquelle j'ai essayé sur deux machines différentes en 10.15, et le script a échoué sur la machine virtuelle sur ces deux machines (2018 MBP et 2015 iMac). Est-il possible de changer le nom d'un fichier via l'NSURL en ASObjC ? Je connais très peu l'ASObjC et je suis un peu intimidé par cela.
0 votes
Vous pouvez utiliser le script AppleScript classique pour le changement de nom, et simplement utiliser NSUrl pour suivre les références des fichiers. Je vais poster une réponse avec un exemple.