IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Comment mettre à jour des alias en nombre après changement de disque [re-résolu]
Options
schoan
posté 5 Aug 2009, 17:54
Message #1


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
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'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 7 Aug 2009, 16:32
Message #2





Guests






Bonjour,

Est-ce que la hiérarchie du dossier maître n'a pas été modifiée ?
Si oui, j'ai un script qui répare les alias, il remplace le début du chemin par celui de l'autre volume dans la ressource "Alis" de l'alias

EX : le script modifie le début du chemin de ce fichier /Volumes/Disque1/Documents/Dossier Maitre/dossier a/abc.pdf
le nouveau chemin sera : /Volumes/Autres/dossier sans titre/Dossier Maitre/dossier a/abc.pdf.


Est-ce que tes alias sont dans seul dossier, ou il faut rechercher les alias dans différent sous dossier ?

Est ce qu'il y a des alias qui ne sont pas brisés dans ton dossier des alias ? , (CAD : d'autres alias qui n'ont pas rapport avec les fichiers déplacés sur l'autre volume).

Si tu as répondu oui à la première question et que tu veux utiliser le script :
mets en attachement (un alias non corrigé et un alias corrigé du même fichier ou dossier)
Je modifierai le script selon tes réponses et selon le chemin original de l'alias.
Go to the top of the page
 
+Quote Post
schoan
posté 7 Aug 2009, 16:41
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Salut,

merci pour ta réponse !

c'est exactement ça.

Pour répondre à tes questions :

la hiérarchie du dossier maître n'a pas été modifiée

je t'envoie un exemple par MP


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 9 Aug 2009, 23:44
Message #4





Guests






Bonjour,

Le script à fonctionné.
Mais, il a réparé environ 90% des alias.

Pourquoi 90% me direz vous.

Parce que certains alias n'avaient pas été mis à jour après qu'il y a eu du changement ( dans le nom d'un dossier ou le nom du fichier, un déplacement).
S’il y a un changement quelconque, un alias se mettra à jour lorsque vous l'ouvrez (par double-clic, ou par son ouverture dans une application. )
Donc, si on brise l'alias en déplaçant un dossier sur un autre volume, le chemin de l'original sera celui lors de la dernière ouverture de l'alias.

Si vous voulez avoir une réussite de cent pour cent, avant de déplacer un dossier sur un autre volume :
Vous enregistrez ce script AppleScript au format progiciel :
Code
on open aliasFiles
    --
end open

Vous obtiendrez une application.
Sélectionnez les alias qui correspondent aux éléments qui seront déplacés, glissé/déposé les alias sur l'application (script), et si nécessaire le système fera la mise à jour des alias.
Soyez sans crainte, ceci n'ouvrira pas les fichiers originaux. biggrin.gif



Voici le script AppleScript pour modifier le chemin du fichier original dans un alias :
Important : Fonctionne seulement pour un dossier déplacé à la racine d'un autre volume, sinon vous devez modifier le script.

Ce script a besoin de Satimage osax 3.4.0, vous pouvez le télécharger 750 ko, c'est gratuit.
Placez-le dans le dossier "ScriptingAdditions" du dossier "Bibliothèque" de votre disque de démarrage.

Code
(* ce script a besoin de  satimage.osax,
  il modifie le chemin original dans un alias pour des éléments (d'un dossier qui a été déplacé à la racine d'un autre volume) *)

set dossiermaitre to "Mes documents importants" -- le nom du dossier déplacé sur l'autre volume

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 dossiermaitre to ":" & dossiermaitre & ":"
    set errorList to {}
    
    set r to do shell script "/usr/bin/find  " & (quoted form of POSIX path of doosierAlias) & " -type f  -empty  -links 1 -print"
    if r is not "" then repeat with i in (get paragraphs of r)
        try
            set f to (POSIX file i) as alias
            set oldOriginal to (load resource 0 type "alis" from f) as string
            if oldOriginal starts with "/" then
                set n to (the offset of dossiermaitre_Unix in oldOriginal) + 1
                set newOriginal to (POSIX file (the_vol_Unix & (text n thru -1 of oldOriginal))) as alias
            else
                set n to (the offset of dossiermaitre in oldOriginal) + 1
                set newOriginal to (the_vol & (text n thru -1 of oldOriginal)) as alias
            end if
            put resource newOriginal to f type alias index 0
        on error
            set end of errorList to f
        end try
    end repeat
    
    activate
    if errorList is not {} then
        display dialog "Vous avez " & (count errorList) & " alias qui n'ont pas été modifiés. " & return & return & "Voir le résultat dans la fenêtre" buttons "OK"
        errorList -- alias non modifié, erreur
    else
        display dialog "Terminé"
    end if
end if

Dans la première ligne du script: set dossiermaitre to "Mes documents importants"
vous devez remplacer Mes documents importants par le nom de votre dossier déplacé.
C'est la seule modification à faire dans le script.

Le script vous affichera un dialogue vous demandant de "Sélectionnez le nouveau volume.", vous devez sélectionner le volume où vous avez déplacé le dossier.
Un autre dialogue vous demandera de "Sélectionnez le dossier qui contient des alias à modifier.", le script recherchera tous les alias dans ce dossier et dans tous ses sous-dossiers.
Si vous ne voulez pas modifier certains alias dans ce dossier, n'utilisez pas ce script, vous devez absolument modifier le script avant de l'utiliser.

La seule chose qui empêchera le script de modifier les alias, est qu'un des dossiers parents du dossier maître ait le même nom
EX : le dossier maître est le deuxième dossier "Documents" dans USB HD:Documents:Sounds:Documents: sur le volume original .
Dans ce cas, c'est à vous de modifier un nom de dossier et de faire la mise à jour des alias avant de déplacer le dossier sur un autre volume
Ou de modifier le script en conséquence.

Editer : alias : c'est un "Finder alias" ou un "Mac alias", ce script ne fonctionne pas pour un lien symbolique (Unix).

Ce message a été modifié par EricaL** - 9 Aug 2009, 23:50.
Go to the top of the page
 
+Quote Post
schoan
posté 9 Aug 2009, 23:58
Message #5


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Merci encore EricaL** pour ton aide et pour le temps précieux que tu me fais épargner.

jap.gif jap.gif jap.gif


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
parcequejelevaux...
posté 10 Aug 2009, 19:43
Message #6


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 628
Inscrit : 22 Jun 2005
Lieu : Forges les Eaux
Membre no 41 308



Citation (EricaL** @ 10 Aug 2009, 00:44) *
Bonjour,

Le script à fonctionné.
Mais, il a réparé environ 90% des alias.

Pourquoi 90% me direz vous.

Parce que certains alias n'avaient pas été mis à jour après qu'il y a eu du changement ( dans le nom d'un dossier ou le nom du fichier, un déplacement).
S’il y a un changement quelconque, un alias se mettra à jour lorsque vous l'ouvrez (par double-clic, ou par son ouverture dans une application. )
Donc, si on brise l'alias en déplaçant un dossier sur un autre volume, le chemin de l'original sera celui lors de la dernière ouverture de l'alias.

Si vous voulez avoir une réussite de cent pour cent, avant de déplacer un dossier sur un autre volume :
Vous enregistrez ce script AppleScript au format progiciel :
Code
on open aliasFiles
    --
end open

Vous obtiendrez une application.
Sélectionnez les alias qui correspondent aux éléments qui seront déplacés, glissé/déposé les alias sur l'application (script), et si nécessaire le système fera la mise à jour des alias.
Soyez sans crainte, ceci n'ouvrira pas les fichiers originaux. biggrin.gif



Voici le script AppleScript pour modifier le chemin du fichier original dans un alias :
Important : Fonctionne seulement pour un dossier déplacé à la racine d'un autre volume, sinon vous devez modifier le script.

Ce script a besoin de Satimage osax 3.4.0, vous pouvez le télécharger 750 ko, c'est gratuit.
Placez-le dans le dossier "ScriptingAdditions" du dossier "Bibliothèque" de votre disque de démarrage.

Code
(* ce script a besoin de  satimage.osax,
  il modifie le chemin original dans un alias pour des éléments (d'un dossier qui a été déplacé à la racine d'un autre volume) *)

set dossiermaitre to "Mes documents importants" -- le nom du dossier déplacé sur l'autre volume

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 dossiermaitre to ":" & dossiermaitre & ":"
    set errorList to {}
    
    set r to do shell script "/usr/bin/find  " & (quoted form of POSIX path of doosierAlias) & " -type f  -empty  -links 1 -print"
    if r is not "" then repeat with i in (get paragraphs of r)
        try
            set f to (POSIX file i) as alias
            set oldOriginal to (load resource 0 type "alis" from f) as string
            if oldOriginal starts with "/" then
                set n to (the offset of dossiermaitre_Unix in oldOriginal) + 1
                set newOriginal to (POSIX file (the_vol_Unix & (text n thru -1 of oldOriginal))) as alias
            else
                set n to (the offset of dossiermaitre in oldOriginal) + 1
                set newOriginal to (the_vol & (text n thru -1 of oldOriginal)) as alias
            end if
            put resource newOriginal to f type alias index 0
        on error
            set end of errorList to f
        end try
    end repeat
    
    activate
    if errorList is not {} then
        display dialog "Vous avez " & (count errorList) & " alias qui n'ont pas été modifiés. " & return & return & "Voir le résultat dans la fenêtre" buttons "OK"
        errorList -- alias non modifié, erreur
    else
        display dialog "Terminé"
    end if
end if

Dans la première ligne du script: set dossiermaitre to "Mes documents importants"
vous devez remplacer Mes documents importants par le nom de votre dossier déplacé.
C'est la seule modification à faire dans le script.

Le script vous affichera un dialogue vous demandant de "Sélectionnez le nouveau volume.", vous devez sélectionner le volume où vous avez déplacé le dossier.
Un autre dialogue vous demandera de "Sélectionnez le dossier qui contient des alias à modifier.", le script recherchera tous les alias dans ce dossier et dans tous ses sous-dossiers.
Si vous ne voulez pas modifier certains alias dans ce dossier, n'utilisez pas ce script, vous devez absolument modifier le script avant de l'utiliser.

La seule chose qui empêchera le script de modifier les alias, est qu'un des dossiers parents du dossier maître ait le même nom
EX : le dossier maître est le deuxième dossier "Documents" dans USB HD:Documents:Sounds:Documents: sur le volume original .
Dans ce cas, c'est à vous de modifier un nom de dossier et de faire la mise à jour des alias avant de déplacer le dossier sur un autre volume
Ou de modifier le script en conséquence.

Editer : alias : c'est un "Finder alias" ou un "Mac alias", ce script ne fonctionne pas pour un lien symbolique (Unix).

Chapeau bas Erical**. Je n'ai jamais rien compris aux script, et ne m'y risquerai pas, mais quelle leçon!!!


--------------------
2 IMAC 500Mhz.80Go.512M donnés à mes switcheurs + P.M G4 AGP 400Mhzhz 160 Go + freebox v3.Tout en 10.4.11.+Imac Tournesol 17" 1ghz+ 1 Tournesol 15" donné par un Macbidouilleur[. j 2 1 Titanium 500mhz+ 1 Ti 667mhz + IMAC G5 1,9Ghz + MBP intel core 2 duo sur snow Leo.. Navigageur Firefox + Thundebird. FAI Free . 3 switch à mon actifs et tous heureux;[color="#FF0000"]Et je CHERCHE, un MBP15"
Go to the top of the page
 
+Quote Post
schoan
posté 21 Aug 2014, 03:32
Message #7


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Je déterre ce topic car le script ne fonctionne plus sous Mavericks.

Je viens d'essayer de le modifier mais sans réussir.

Quelqu'un sait-il comment faire ?

merci d'avance


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 21 Aug 2014, 22:37
Message #8





Guests






Bonsoir,

Citation (schoan @ 20 Aug 2014, 22:32) *
Je déterre ce topic car le script ne fonctionne plus sous Mavericks.
Oui, la commande find with -empty -links ne fonctionne plus sur Mavericks pour trouver des alias.

Si le dossier des alias est indexé par Spotlight, remplace la ligne du do shell script par celui-ci
Code
set r to do shell script "/usr/bin/mdfind -onlyin  " & (quoted form of POSIX path of doosierAlias) & " 'kMDItemKind == \"Alias\"'"
Go to the top of the page
 
+Quote Post
schoan
posté 21 Aug 2014, 22:59
Message #9


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
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'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 22 Aug 2014, 23:53
Message #10





Guests






Bonsoir,

Citation (schoan @ 21 Aug 2014, 17:59) *
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.
Go to the top of the page
 
+Quote Post
schoan
posté 23 Aug 2014, 17:19
Message #11


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



merci pour ce nouveau code !

j'ai testé et ça ne fonctionne toujours pas sad.gif

je précise que je lance ce nouveau script depuis un disque SSD qui n'est pas celui sur lequel se trouve le dossier d'alias à modifier.

Est-ce que cela peut venir du fait qu'il n'est pas exécuté en root ?

Je vais essayer de faire un test pas à pas ce soir ou demain, mais si tu as une idée...


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 24 Aug 2014, 02:26
Message #12





Guests






Bonsoir,

Citation (schoan @ 23 Aug 2014, 12:19) *
j'ai testé et ça ne fonctionne toujours pas sad.gif

je précise que je lance ce nouveau script depuis un disque SSD qui n'est pas celui sur lequel se trouve le dossier d'alias à modifier.

Est-ce que cela peut venir du fait qu'il n'est pas exécuté en root ?

Non, il n'a pas besoin de cela, si tu as les droits d'écriture dans ton dossier des alias, cela fonctionnera.
Sinon, si tu n'avais pas les permissions, une alerte s'afficherais lorsque le "do shell script" recherche les alias.

Quand le script se termine, est-ce que tu as un dialogue qui s'affiche ?

Si le dialogue affiche "Vous avez x alias qui n'ont pas été modifiés.", regarde dans le presse-papiers (les chemins des alias qui n'ont pas été corrigés seront dedans )
Si le dialogue affiche "Terminé" et que cela n'a pas fonctionné, le problème est qu'il ne trouve aucun alias, si le volume qui contient ton dossier des alias n'est pas indexé par Spotlight, la commande mdfind ne trouvera rien.

Essaie ce script, si cela ne donne aucun résultat (partie du bas de la fenêtre) dans l'éditeur AppleScript, cela confirmera que Spotlight n'indexe pas ce volume.
Code
set d to choose folder with prompt "Sélectionnez le dossier qui contient des alias à modifier."
do shell script "/usr/bin/mdfind -onlyin  " & (quoted form of POSIX path of d) & " 'kMDItemKind == \"Alias\"'"



Edition: correction, c'est la commande find qui peut générer une erreur, mdfind ne génère pas d'erreur vu que cela fonctionne avec Spotlight

Ce message a été modifié par JacqR - 24 Aug 2014, 02:33.
Go to the top of the page
 
+Quote Post
schoan
posté 24 Aug 2014, 03:26
Message #13


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Citation (JacqR @ 24 Aug 2014, 03:26) *
Quand le script se termine, est-ce que tu as un dialogue qui s'affiche ?

Si le dialogue affiche "Vous avez x alias qui n'ont pas été modifiés.", regarde dans le presse-papiers (les chemins des alias qui n'ont pas été corrigés seront dedans )
Si le dialogue affiche "Terminé" et que cela n'a pas fonctionné, le problème est qu'il ne trouve aucun alias, si le volume qui contient ton dossier des alias n'est pas indexé par Spotlight, la commande mdfind ne trouvera rien.

Essaie ce script, si cela ne donne aucun résultat (partie du bas de la fenêtre) dans l'éditeur AppleScript, cela confirmera que Spotlight n'indexe pas ce volume.
Code
set d to choose folder with prompt "Sélectionnez le dossier qui contient des alias à modifier."
do shell script "/usr/bin/mdfind -onlyin  " & (quoted form of POSIX path of d) & " 'kMDItemKind == \"Alias\"'"


Merci de ta réponse et de ces précisions.

En fait, j'ai deux dialogues qui s'affichent (pour chaque alias non modifié) : le premier est "Une erreur est survenue" ; le second "Vous avez 1 alias qui n'a pas été modifié. Le résultat est dans le presse papier"

Dans le presse papier, j'ai une ligne commençant par /Volumes/Macintosh HD/[le nom du dossier déplacé]/...

Mais l'alias n'a toujours pas été modifié. Je précise encore que le nom du fichier original, donc le chemin de l'alias cassé comporte souvent des espaces, parenthèses, apostrophes, etc.


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 24 Aug 2014, 06:26
Message #14





Guests






Citation (schoan @ 23 Aug 2014, 22:26) *
Merci de ta réponse et de ces précisions.

En fait, j'ai deux dialogues qui s'affichent (pour chaque alias non modifié) : le premier est "Une erreur est survenue" ; le second "Vous avez 1 alias qui n'a pas été modifié. Le résultat est dans le presse papier"

Dans le presse papier, j'ai une ligne commençant par /Volumes/Macintosh HD/[le nom du dossier déplacé]/...

Mais l'alias n'a toujours pas été modifié. Je précise encore que le nom du fichier original, donc le chemin de l'alias cassé comporte souvent des espaces, parenthèses, apostrophes, etc.


Ok, j'ai re-testé le script et il ne fonctionne plus. blink.gif

20 minutes plus tard, j'ai trouvé le problème, j'avais oublié de changer le nom du dossier maitre dans le script. biggrin.gif biggrin.gif
J'ai testé sur des noms avec tous les caractères possibles, aucun problème.
Par contre, si le nom du dossier maitre sur le volume n'est pas à la racine comme indiqué dans le post du script original, cela ne fonctionnera pas, si c'est cela déplace le dossier à la racine le temps de corriger les alias, place-le où tu voudras quand les alias fonctionneront.
Même problème, si le nom du dossier maitre est changé par rapport à l'ancien.

Fait toute les vérifications avant de lancer le script, regarde le chemin du fichier original sur un alias brisé (informations dans le Finder), pour connaitre le nom des sous-dossiers par rapport au sous-dossier sur le nouveau volume.

Aussi, il faut enlever le dialog dans ce bloc try, car c'était là que pour le debug, je l'avais enlever quelque minutes plus tard dans mon message.
Code
try
    my setOrigPath(i as text, dossiermaitre_Unix, the_vol_Unix)
on error err
    --display dialog err
    set end of errorList to (i as text)
end try


Ce message a été modifié par JacqR - 24 Aug 2014, 06:30.
Go to the top of the page
 
+Quote Post
schoan
posté 24 Aug 2014, 17:01
Message #15


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



magnifique, ça marche !

j'avais modifié quelques noms de dossier et je faisais le test sur les alias appartenant à ce groupe.

merci pour ton aide !!!


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
schoan
posté 24 Aug 2014, 18:00
Message #16


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



encore un petit problème à résoudre...

J'ai mis à jour tous mes alias sur mon disque principal et tout fonctionne.

Mais j'ai un disque externe sur lequel j'ai la même série de dossiers/documents (mêmes chemins). Le problème est que j'ai placé tous ceci dans une image disque.

J'ai essayé de choisir l'image mais, évidemment, le dossier maître n'est pas à la racine du disque. Il est à la racine de l'image.

Vois-tu un moyen de procéder ?


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 25 Aug 2014, 01:02
Message #17





Guests






Bonsoir,

Citation (schoan @ 24 Aug 2014, 13:00) *
J'ai mis à jour tous mes alias sur mon disque principal et tout fonctionne.
Content que cela a résolu le chemin de tes alias. smile.gif


Citation (schoan @ 24 Aug 2014, 13:00) *
Mais j'ai un disque externe sur lequel j'ai la même série de dossiers/documents (mêmes chemins). Le problème est que j'ai placé tous ceci dans une image disque.

J'ai essayé de choisir l'image mais, évidemment, le dossier maître n'est pas à la racine du disque. Il est à la racine de l'image.

Vois-tu un moyen de procéder ?
Je viens de tester le script sur des documents dans une image disque , ça fonctionne .

Lorsque le script me demande de "Sélectionnez le nouveau volume.", je sélectionne le volume monté de l'image disque, le restant est pareil, l'emplacement du dossier des alias n'a pas d'importance.
Le nom du dossier maitre doit-être celui du dossier à la racine du volume de l'image disque.
Mais, ce nom doit-être vérifier avec les information d'un alias, et modifié le nom du dossier maitre dans le volume de l'image disque et dans le script en conséquence ce que t'indique le chemin original dans les informations de l'alias.

Ce message a été modifié par JacqR - 25 Aug 2014, 01:04.
Go to the top of the page
 
+Quote Post
schoan
posté 25 Aug 2014, 01:56
Message #18


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



c'est tout bon, j'avais un conflit entre le nom du disque externe, le nom de l'image et celui de l'image montée...

encore merci pour ton aide !!!!


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
schoan
posté 24 Jun 2019, 00:33
Message #19


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Je remonte ce sujet car j'ai de nouveau une question concernant la mise à jour des alias en nombre.

Cette fois, c'est un nom de dossier dans l'arborescence. Dans ce dossier (et ses sous-dossiers), il y a des centaines d'alias qui doient tous être modifié de la même manière : .../XXXX/... par .../YYYY/...

je ne parviens pas à modifier le script qui avait été élaboré ici et, après de nombreuses recherches (en français comme en anglais) sur le net, je me résouds à demander à nouveau de l'aide ici.

Une idée de la manière dont il faut modifier le script pour que l'on puisse choisir (ou modifier directement dans le script) le nom du dossier dans le chemin ?

merci d'avance de votre aide


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
baron
posté 24 Jun 2019, 13:21
Message #20


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 12 728
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Bonjour schoan,

Les principaux contributeurs à ce sujet s'étant retirés, ne penses-tu pas que ce sujet aurait plus de chances de trouver réponse dans la section Programmation > Technologies Apple ?
Si tu veux, je peux le déplacer.

(J'ai modifié le titre pour indiquer Up plutôt que Résolu.)


--------------------
MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 4 Go/SSD Samsung 850EVO 500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
schoan
posté 24 Jun 2019, 13:24
Message #21


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Salut Baron,

Ça fait longtemps... smile.gif

Avec grand plaisir !!

(j'ai vu et je t'en remercie vivement.)

Ce message a été modifié par schoan - 24 Jun 2019, 13:25.


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post
baron
posté 24 Jun 2019, 13:41
Message #22


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 12 728
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



C'est toujours un plaisir ! smile.gif



--------------------
MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 4 Go/SSD Samsung 850EVO 500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
schoan
posté 25 Jun 2019, 23:34
Message #23


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 890
Inscrit : 8 Jan 2003
Lieu : dans ma bibliothèque
Membre no 5 517



Voilà, j'ai trouvé la solution : une fonction (trouvée sur ce site) pour remplacer une partie de la chaîne stockée dans la variable tpath. J'ai simplement ajouté autant de lignes nécessaires à mettre à jour les noms des dossiers qui ont été modifiés depuis la création des alias.

La fonction en question :

Code
on replaceStringInString(sourceText, searchString, replacementString)
    set aString to current application's NSString's stringWithString:sourceText
    set resultString to ¬
        aString's stringByReplacingOccurrencesOfString:searchString withString:replacementString
    return resultString as text
end replaceStringInString


mais cela ne règle pas le problème des noms de fichiers qui auraient changé entre-temps. Bon, les alias non remplacés (en raison de l'inexistence du fichier original sous son nom ancien) sont indiqués dans les erreurs listées dans le presse-papier. C'est toujours ça.

Baron, je te laisse indiquer "résolu" dans le titre du thread, merci !


--------------------
iMac 27'' 2.7 Ghz Intel Core i5 ; Macbook Air 13,3'' ; Macbook pro 15'' 2.16 GHz Intel Core 2 Duo, 2x2 Ghz PowerPC G5 - CS3, CS4 et CS6 - OS X.10.11.6 et des livres, beaucoup de livres.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th July 2019 - 13:15