Comment mettre à jour des alias en nombre après changement de disque [re-résolu] |
Bienvenue invité ( Connexion | Inscription )
Comment mettre à jour des alias en nombre après changement de disque [re-résolu] |
5 Aug 2009, 17:54
Message
#1
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 913 Inscrit : 8 Jan 2003 Lieu : dans ma bibliothèque Membre no 5 517 |
Bonjour,
J'ai élaboré un système de classement de documents pdf et d'autres fichiers en créant une série de dossiers et sous-dossiers sur un disque dur externe (/Volumes/nom_du_disque/...). En copiant le contenu de ce disque sur mon nouveau disque dur, les alias ne sont plus valides. J'aimerais changer les liens de ces centaines de fichiers automatiquement. Quelqu'un a une idée ? Ce message a été modifié par schoan - 9 Aug 2009, 23:48. -------------------- iMac 27'' 3.4 Ghz Intel Core i7 (ex 2.7 - i5) sous OS X.10.13.6 ; Macbook Air 13,3'' sous OS X 10.14.6 ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 et des livres, beaucoup de livres.
|
|
|
21 Aug 2014, 22:59
Message
#2
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 913 Inscrit : 8 Jan 2003 Lieu : dans ma bibliothèque Membre no 5 517 |
merci pour ta réponse, mais ça ne fonctionne toujours pas.
Il me semble que le problème vient de la ligne Code set oldOriginal to (load resource 0 type "alis" from f) as string j'ai essayé d'afficher le contenu de oldOriginal et la variable est vide. De même j'ai essayé d'attribuer une valeur fixe à newOriginal mais l'alias n'est pas modifié... J'ai pourtant mis à jour satimage. Qu'en dis-tu ? -------------------- iMac 27'' 3.4 Ghz Intel Core i7 (ex 2.7 - i5) sous OS X.10.13.6 ; Macbook Air 13,3'' sous OS X 10.14.6 ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 et des livres, beaucoup de livres.
|
|
|
Guest_JacqR_* |
22 Aug 2014, 23:53
Message
#3
|
Guests |
Bonsoir,
Il me semble que le problème vient de la ligne Code set oldOriginal to (load resource 0 type "alis" from f) as string Oui, load resource de l'osax Satimage ne fonctionne plus sur les alias brisés, put ressource ne fonctionne plus (alias brisé ou normal). Voici une alternative, un script "Applescript-Cocoa Applet" (le script utilise du code Objective-C), ce script créera un nouvel alias, si cela réussi, il écrasera l'alias brisé : Ouvre l'application "Éditeur AppleScript" Sélectionne dans le menu "Fichier" --> "Nouveau à partir du modèle" --> "Applescript-Cocoa Applet" Code use framework "/System/Library/Frameworks/Foundation.framework" use scripting additions global pKey, tBook, fileManager, fOpt set dossiermaitre to "Mes documents importants" --*** le nom du dossier déplacé sur l'autre volume ***** c'est important de le changer par le nom de votre dossier déplacé. ********------------- set pKey to {(current application's NSURLPathKey)} set tBook to {(current application's NSURLBookmarkCreationSuitableForBookmarkFile)} set fOpt to {(current application's NSFileManagerItemReplacementUsingNewMetadataOnly)} tell current application's NSFileManager to set fileManager to defaultManager() set the_vol to (choose folder with prompt "Sélectionnez le nouveau volume.") if kind of (info for the_vol without size) is "Volume" then -- c'est un volume set doosierAlias to choose folder with prompt "Sélectionnez le dossier qui contient des alias à modifier." set the_vol to the_vol as string set the_vol_Unix to POSIX path of the_vol set dossiermaitre_Unix to (POSIX path of dossiermaitre) & "/" set errorList to {} set r to do shell script "/usr/bin/mdfind -onlyin " & (quoted form of POSIX path of doosierAlias) & " 'kMDItemKind == \"Alias\"'" if r is not "" then repeat with i in (get paragraphs of r) try my setOrigPath(i as text, dossiermaitre_Unix, the_vol_Unix) on error set end of errorList to (i as text) end try end repeat set tc to (count errorList) activate if tc > 0 then set tid to text item delimiters set text item delimiters to return set errorList to errorList as text set text item delimiters to tid set the clipboard to errorList display dialog "Vous avez " & tc & " alias qui n'ont pas été modifiés. " & return & return & "Le résultat est dans le presse-papier" buttons "OK" else display dialog "Terminé" buttons "OK" end if tell me to quit end if on setOrigPath(pPath, p, v) set aliasURL to current application's NSURL's fileURLWithPath:pPath set bookmarkData to current application's NSURL's bookmarkDataWithContentsOfURL:aliasURL |error|:(missing value) set values to current application's NSURL's resourceValuesForKeys:pKey fromBookmarkData:bookmarkData set tpath to (values's objectForKey:(item 1 of pKey)) as text -- on obtient le chemin de l'original brisée set n to (the offset of p in tpath) + 1 set newOriginal to v & (text n thru -1 of tpath) -- ce sera le nouveau chemin de l'original set newURL to current application's NSURL's fileURLWithPath:newOriginal set tbookmarkData to newURL's bookmarkDataWithOptions:tBook includingResourceValuesForKeys:(missing value) relativeToURL:(missing value) |error|:(missing value) set newAliasURL to current application's NSURL's fileURLWithPath:(pPath & "___copy__") current application's NSURL's writeBookmarkData:tbookmarkData toURL:newAliasURL options:0 |error|:(missing value) -- création de l'alias if the result then -- création de l'alias réussi, on remplace l'alias brisé par le nouvel alias fileManager's replaceItemAtURL:aliasURL withItemAtURL:newAliasURL backupItemName:(missing value) options:fOpt resultingItemURL:(missing value) |error|:(missing value) else error end if end setOrigPath Un "Applescript-Cocoa Applet" ne fonctionne pas en tant que script mais comme une application, donc, si vous pressez le bouton "Exécuter" dans l'Éditeur AppleScript, un dialogue s'affichera, il suffit de cliquer sur le bouton "Lancer l'application". Comme il fonctionne comme une application, il n'y a aucun résultat dans la fenêtre de l'Éditeur AppleScript, donc s'il y a des erreurs, le résultat sera dans le presse-papiers. Ce message a été modifié par JacqR - 22 Aug 2014, 23:59. |
|
|
Nous sommes le : 2nd June 2024 - 02:43 |