Aller au contenu


Photo

à propos d'alias


  • Please log in to reply
33 replies to this topic

#1 destriel

destriel

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:imac
  • Sexe:Masculin

Posté 03 octobre 2012 - 15:57

Bonjour à tous,
Je suis nouveau sur ce forum, et j'aurai besoin de vos conseils pour créer un script (car je ne sais absolument pas formuler ce genre de chose!)
Voici ce que je souhaiterai faire:
script: 1- ouvrir le dossier (x) (avec le nom de ce dossier ou en cliquant dessus à l'aide du script)
2-créer un alias des fichiers contenus dans ce dossier
3-mettre à la corbeille les fichiers originaux
4-refermer le dossier
5-mettre une étiquette "jaune" à ce dossier (fin)
Si une bonne âme peut prendre un peu de temps pour me dire les directions à suivre, je l'en remercie par avance.
car j'ai une bonne centaine de dossiers d'un logiciel , et je dois garder les originaux sur un DD externe et mettre les alias sur le DD de l'ordi

#2 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 678 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 03 octobre 2012 - 17:25

Hello et bienvenue parmi nous :yahoo:

Un truc que je ne comprends pas : si tu jettes tes originaux, tes alias ne te serviront plus à rien :blink:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#3 Amarok II

Amarok II

    NeoAdmin

  • Administrateurs
  • PipPipPipPipPipPip
  • 1 472 Messages :
  • Configuration:Un petit truc en alu avec un grand rectangle lumineux qui affiche des choses qui bougent quand je chatouille un autre truc en alu, là... tout plat.
  • Sexe:Mystère
  • Localisation:Perpignan, France
  • Passions:MacFr bien sûr !

Posté 03 octobre 2012 - 17:49

Bienvenue aussi sur notre truculent Forum :P

Ici, nous répondons à toute les demandes avec le sourire, la joie, et un plaisir non dissimulé :)

Bon, alors, reprenons-nous.
Un alias (raccourci dans le monde windows), n'est qu'une sorte de pointeur, un peu comme un lien (url) sur internet. si je rajoute "www.apple.com" à mes signets, cela ne veux pas dire que j'ai mis sur mon ordinateur TOUT le site apple, je n'ai fait que mémoriser chez moi, l'adresse du site, et rien de plus.
Un alias ne stocke que le chemin vers le fichier original.
Sur mac, un alias est dit "dynamique", il est capable de "suivre" le document original si jamais celui-ci est déplacé.
Si l'original est supprimé, l'alias devient inutile...

Pour commencer avec AppleScript, le mieux pour toi est de regarder du côté de l'application Automator. Il permet d'enchainer des actions sans saisir aucune ligne de code.
La description de ton script s'y prête parfaitement :-) même si "on" trouve qu'il ne va que te poser des soucis (suppression des originaux, donc alias inutilisables).

MacBook Pro (13", fin 2012)
8Go RAM - 256Go SSD - 1To HD

Technicien certifié ACMT et plein d'autres trucs...

"On peut voir de bien des façons. On peut être aveugle de bien des façons." (Frank Herbert, Dune)

"Tu ne feras point de machine à l'esprit de l'homme semblable." (Frank Herbert, Dune)


#4 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 03 octobre 2012 - 22:21

Bonsoir à tous,
Effectivement, 2 actions Automator (Action de dossier: Sélectionner un dossier et Nouvel Alias) devrait permettre de répondre à la demande initiale de créer des Alias pour tous les fichiers d'un dossier.

Comme indiqué dans les commentaires précédents, supprimer ensuite les originaux semble curieux car désormais les nouveau Alias pointeront sur ... du vide. Mais après tout pourquoi pas.

Pour cela que cela intéresse, d'ailleurs, lorsqu'un lien d'Alias a disparu, la fonction habituelle d'AppleScript "Get Original Item of Mon_Alias", qui lit le chemin et le nom de l'original, plante : C'est logique car il n'y a plus de résultat, mais frustrant lorsque l'on veux reconstruire des listes d'alias vers un nouvel emplacement.
Plus frustrant, si vous voulez remettre un nouveau chemin (que vous connaissez) en se référant au même fichier mais à un autre emplacement, vous ne pouvez pas car la fonction "Set original Item of file Mon_Alias to file Nouvel_Original" plante aussi !

Pour contourner cela, il faut supprimer le premier Alias et en créer un nouveau. Le script ci-dessous permet, sur l'alias original, avant suppression, au moins de récupérer le nom et chemin du fichier d'origine.
J'ai utilisé cette routine pour remettre tous les alias dont la source était perdue (disque dur avec originaux en panne définitive) pour qu'ils pointent sur des fichiers identiques, sur un nouveau disque (merci les sauvegardes) :

-- routine pour retrouver un Alias cassé (fichier origine n'existe plus)
on Origine_Alias(F_Alias)
	set R to ""
	tell application "Finder" to open information window of file (F_Alias as text)
	tell application "System Events" to tell process "Finder" to set R to value of static text 19 of scroll area 1 of front window
	tell application "Finder" to close front window
	return R
end Origine_Alias

Cette sub-routine peut être appelée dans le programme principal avec, par exemple : Set Mon_Fichier_Origine to Origine_Alias(Mon_Alias_Cassé)
J'espère que cela pourra servir à certains. J'ai personnellement récupéré quelques centaines d'alias sur un média center avec un programme utilisant cette routine.
Cordialement

#5 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 678 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 04 octobre 2012 - 09:57

Merci PBell pour le partage de ton code :yahoo:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#6 destriel

destriel

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:imac
  • Sexe:Masculin

Posté 04 octobre 2012 - 18:56

bonjour à tous ,

merci à Zekiller et AmarokII
Je me suis peut-être mal exprimé..
J'ai commencé par faire une copie des fichiers sur le DD externe et j'intervenais sur les fichiers du DD de l'ordi .
C'est à dire que je faisais un alias et (corbeille pour les originaux du DD ordi puisqu'ils sont en doublon sur l'externe

et cela pour ne pas asphyxier mon ordi vu que j'ai env.600GO de sampler .
J'ai déjà fait cela et donc pas de problème avec mon logiciel .
En fait j'avais simplement besoin d'un script qui me facilite cette opération sans passer des heures .

P Bell,
merci pour ces codes , je vais donc essayer de comprendre cela .

#7 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 04 octobre 2012 - 19:44

Bonsoir,
Maintenant je comprends mieux ton besoin.
Il me semble similaire à celui qui m'a fait écrire un programme un peu plus complet que l'extrait de mon post précédent.

J'explique : J'avais des centaines de fichiers originaux sur un disque N°1, dans un seul dossier.
Chaque fichier avait un alias dans un autre disque N°2.
Le disque N°1 a rendu l'âme et j'ai pris un disque N°3 sur lequel j'ai remis une copie de tous les fichier originaux.

Il fallait donc réparer les alias du disque 2 en les faisant re-pointer sur le nouveau N°3, sachant que le noms des originaux restaient inchangés.

Pour faire le parallèle avec ton besoin, tu a des alias sur un disque 2 qui pointaient vers des fichier que tu as supprimés (comme mon disque 1) et tu veux les faire pointer sur le nouveau support (D3).

J'ai fait un AppleScript complet très commenté qui fait exactement cela et que je peux expliquer si vous le souhaitez.
Avant de le poster, j'ai juste 2 questions pour l'administrateur / régulateur de ce super forum :
- Mon script fait environ 2 pages. Y a -t-il des règles limites de taille à respecter ?
- Dois-je l'insérer comme du code entre balises ou y a-t-il un moyen de mettre le fichier en pj directement ?

Cordialement

#8 destriel

destriel

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:imac
  • Sexe:Masculin

Posté 05 octobre 2012 - 03:12

P Bell,
non non ce n'est pas cela..
j'ai bien gardé les originaux, ils sont sur le DD externe (D2 si tu préfères) et les alias sont sur le DD interne (ordi ou D1)

J'ai fait au départ un copier coller des dossiers qui étaient sur l'ordi et placés sur le DD externe. Déjà pour m'assurer de ne rien perdre .
Ensuite sur les dossiers du D ordi j'ai fait des alias et enlevé le doublon des originaux. Donc il me reste les originaux sur le DD externe et bien les alias sur le DD ordi

Par contre je cherche un moyen par script pour refaire ce genre de manip car je vais avoir env 200 dossiers supplémentaires
Je dois installer prochainement 2 logiciels avec des dossiers qui pèsent une tonne.

En fait pour faire simple: il faudrait un script qui fasse les manips suivantes:
1°) Un doublon des fichiers originaux (qui seront sur le D1) et les placer sur le D2
2°) transformer les originaux du D1 en alias.
Comme cela je pointe les fichiers en questions et le travail se fait automatiquement (si je me trompe pas c'est un applet?)

Ton AppleScript est très intéressant dans le cas de perte de fichiers et très utile

Merci encore pour toutes ces informations
j'avoue cela fait des années que j'aurai besoin d'apprendre l'AppleScript mais je n'arrive pas à rentrer dedans.
Si un jour je trouve un bouquin qui explique clairement .

#9 Amarok II

Amarok II

    NeoAdmin

  • Administrateurs
  • PipPipPipPipPipPip
  • 1 472 Messages :
  • Configuration:Un petit truc en alu avec un grand rectangle lumineux qui affiche des choses qui bougent quand je chatouille un autre truc en alu, là... tout plat.
  • Sexe:Mystère
  • Localisation:Perpignan, France
  • Passions:MacFr bien sûr !

Posté 05 octobre 2012 - 09:28

Salut tout le monde !

Tous ces dossiers à copier, aliasser, etc. ils ne pourraient pas être par hasard placés dans le même dossier conteneur ?
genre un dossier "datas", on aurai qu'à faire un alias (voire un lien symbolique), de ce dossier "datas" situé sur ton disque externe, dans ton disque interne et basta ?
Plus besoin de faire des alias à chaque fois?

MacBook Pro (13", fin 2012)
8Go RAM - 256Go SSD - 1To HD

Technicien certifié ACMT et plein d'autres trucs...

"On peut voir de bien des façons. On peut être aveugle de bien des façons." (Frank Herbert, Dune)

"Tu ne feras point de machine à l'esprit de l'homme semblable." (Frank Herbert, Dune)


#10 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 06 octobre 2012 - 19:36

Bonsoir

Ce qu'il faudrait savoir dans ta recherche d'un code AppleScript.

Il doit faire quoi?

1) Créer un dossier avec les alias de tous les fichiers contenu dans le dossier sélectionné (sans prendre en compte les affichages des noms des sous_dossiers).

2) Gérer les miniatures dans les fenêtres Lire les informations si ce sont des images, ou des icônes ajoutées par tes soins (c'est une fenêtre du Finder qui affiche, donc plus facile à lire qu'un fichier texte) à la place des icônes génériques.

3) Gérer les noms, si des doublons dans différents sous-dossier.

4) Ajouter une étiquette devais être sans problème.

et d'autres problèmes a ajouter suivant tes demandes.

Si la commande 2 demandé, ajoute des fichiers invisibles icon pour chaque fichiers traités (travail invisible, sans aucunes ouvertures de fenêtres) donc prend de la place sur le DD.

Le dossier avec les alias, déplacé dans le volume désiré.

Les commandes 1, 2 , 3 et 4 ne devrais causer aucun problèmes.

Le plus gros problème, c'est que je teste avec Léopard 10.5.8, j'attend mon nouveau Mac avec Mountain Lion dans 8 à 10 jours).

@+

#11 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 08 octobre 2012 - 09:52

Bonjour Destriel,
Merci de tes explications. Je crois maintenant avoir compris ton besoin.

Pour ce faire, effectivement un petit script semble relativement facile.
Voici celui que je viens de t'écrire avec de nombreux commentaires.
Il est largement perfectible car la version ci-dessous est minimaliste en termes de gestion des erreurs, mais au moins, il rempli, je pense, les fonctions que tu souhaites.

Je filtre, dans le dossier source, les fichiers qui sont des Alias. Tu n'en as sans doute pas au départ, mais si le programme se plante en cours (erreur copie finder,...?) tu peux ainsi le relancer sur le même dossier, il sautera les alias déjà crées.

Cordialement

-- sélectionne le dossier source contenant des fichiers : DSource
-- sélectionne le dossier destination : DDestination

-- copie les fichiers de Source vers Destination (sauf si Alias)
-- Supprime le fichier de la Source après copie et le remplace par un alias vers le fichier copié

tell application "Finder"
	-- Sélectionne le dossier source et tous les fichiers non Alias
	set DSource to ((choose folder with prompt "Choisissez le dossier Source" without invisibles) as alias) as string
	set Mes_Fichiers to every file of entire contents of folder DSource whose class is not alias file
	
	-- Sélectionne le dossier des destination (si disque externe, il doit être déjà accessible via la Finder)
	set DDestination to ((choose folder with prompt "Choisissez le dossier Destination:" without invisibles) as alias) as string
	set Nombre to count of Mes_Fichiers
	-- confirmation de l'utilisateur
	display dialog "Confirmez le transfert de " & Nombre & " Fichiers de : " & return & DSource & return & "Vers " & return & DDestination & return & "avec création d'alias ? "
end tell

-- boucle sur chaque fichier :
repeat with Fichier in Mes_Fichiers
	set Erreur to false
	tell application "Finder"
		-- copie du fichier
		try
			-- le Move copie entre 2 disques, mais ne fait que changer le dossier si DSource et DDestination sont dans le même disque
			-- le duplicate force la duplication (même si même support physique)
			-- donc par défaut le move est soit un duplicate, soit plus rapide. J'utilise un duplicate pour le test
			-- move Fichier to folder DDestination
			duplicate Fichier to folder DDestination
		on error
			-- Erreur Finder, impossible de copier le fichier
			set Erreur to true
		end try
		if not Erreur then
			-- sauvegarde le nom 
			set Nom to name of Fichier
			-- supprime l'original
			delete Fichier
			set Mon_Alias to make alias to (DDestination & Nom) at DSource
			set name of Mon_Alias to Nom
		end if
	end tell
end repeat

tell application "Finder" to display dialog "C'est fini !" & return & "copie de " & Nombre & " fichiers faite !"


#12 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 08 octobre 2012 - 13:29

Bonjour

Une façon différente pour gérer ce problème.

Testé avec Léopard 10.5.8 (j'attend ML).

C'est un code de test, donc les alias se trouvent dans un dossier du même nom que le dossier original avec un label jaune (si ça fonctionne chez vous).

Le code
set dossier_original to choose folder -- Choix du dossier

-- Nom du dossier sélectionné
set {displayed name:nom_Dossier} to info for dossier_original as alias

tell application "Finder"
	-- Si le dossier de réception des alias n'existe pas
	if not (folder nom_Dossier exists) in dossier_original then
		-- Création du dossier des alias dans le dossier sélectionné
		make new folder at dossier_original with properties {name:nom_Dossier}
		-- Label jaune à ce nouveau dossier
		set label index of folder (dossier_original & nom_Dossier as string) to 3
	else
		display dialog "Dossier déjà utilisé" -- Pour ne plus utiliser ce dossier si il existe
		return
	end if
	
	try
		set chemins_Fichiers to (files of entire contents of folder dossier_original) as alias list -- Si plusieurs fichiers existent
	on error
		set chemins_Fichiers to ((files of entire contents of folder dossier_original) as alias) as list -- Si un seul fichier trouvé (évite une erreur)
	end try
	(*
	-- Une routine en option, si l'on désire que les alias s'affichent avec les images si existent à la place des icônes génériques
	*)
	repeat with fichier_Lue in chemins_Fichiers
		if (fichier_Lue as string) contains "." then -- Évite de prendre en compte les alias (ne possèdent pas d'extensions chez moi)
			-- Création de l'alias du fichier lue dans le dossier des alias (si doublon de nom, lui ajoute un numéro)
			make alias to fichier_Lue at folder nom_Dossier in folder dossier_original
		end if
	end repeat
	
end tell

Je vous laisse regarder ce code pour Léopard, Je ferais les modifications qu'en j'aurais le dernier fauve (en fin de semaine).

Cordialement

JL

Ce message a été modifié par csimple0-N - 08 octobre 2012 - 13:59 .


#13 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 08 octobre 2012 - 15:57

Bonsoir csimple0-N
Merci pour ton code.
Effectivement on peut ajouter au code la création automatique du dossier de destination.
Tu ne fais pas de « delete » de chaque fichier source. Sur le fond, je suis tout à fait d’accord avec toi, c’est moins risqué, mais j’ai supposé que Destriel a demandé la suppression en connaissance de cause. Il indique d’ailleurs avoir fait une sauvegarde.. Sage précaution !

En lisant nos 2 codes (le tien sous 10.5.8 et le mien sous 10.6.8), je ne vois pas d’instruction particulièrement « hors norme » qui pourrait poser un problème sur Mountain Lyon.
Dans les 2 cas, nous ne faisons appel qu’à des instructions somme toute basique du Finder. Vivement ta confirmation en fin de semaine.

J’ai une question :
Tu mentionnes l’option si l’on désire que les alias s’affichent avec les images des originaux si elles existent.
Le « make alias » donne déjà des icones avec image de l’original et aussi dans l’aperçu de lire les informations (en tout cas sur Snow Leopard).
N’est-ce pas le cas sur Leopard ou fais tu référence à autre chose ?


Enfin, je vois que la remarque de Amarok II du 5 octobre n’a pas appelé de commentaire.
D’un point de vue fonctionnelle, je trouve qu’elle est parfaite, juste, pleine de bon sens et de simplicité.
Avec tout le respect que je dois à notre administrateur, je ne reproche à cette réponse qu’une petite chose : Elle ne permet pas de s’amuser un peu avec Applescript …

Cordialement

#14 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 08 octobre 2012 - 18:31

Bonsoir csimple0-N

Tu mentionnes l’option si l’on désire que les alias s’affichent avec les images des originaux si elles existent.

Cordialement

Bonsoir

Avec mon fauve, si tu ne fait pas un cmd i (pour les anciens Pomme i) et un Glisser-Déposer des images pour afficher ces dernières à la place des icônes génériques le résultat est pas beau.

Chez moi une image .png, m'affiche l'icône générique .png, avec ma routine alors affichage de l'image.png

Donc si je comprend bien, ma routine se trouve inutile avec les nouveaux fauves.

@+

#15 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 09 octobre 2012 - 04:49

Bonjour à tous :)

Et bien, ça faisait un moment que je n'étais pas passé faire un tour par ici, j'espère que tout le monde se porte bien :yahoo:

Ok, comme l'a si bien dit PBell, on peut s'amuser un peu avec AS, alors voici ma proposition (brièvement commentée) :

-- On choisi les dossiers source et cible
set sDossSource to (choose folder without invisibles) as alias as string
set sDossCible to (choose folder without invisibles) as alias as string

-- On active le Finder
tell application "Finder"
	try
		-- On mémorise le chemin de tous les fichiers présents dans le dossier source
		set aFichiers to every file of entire contents of folder sDossSource as alias list
		
		-- On duplique la liste des fichiers dans le dossier cible et on les mémorise
		set aDupli to duplicate aFichiers to folder sDossCible
		
		-- On jette les fichiers du dossier source à la corbeille
		delete aFichiers
		
		-- On crée des alias à partir des fichier dupliqués dans le dossier cible
		make new alias to aDupli at folder sDossSource
		
		-- On marque le dossier source avec un couleur de famille
		set label index of folder sDossSource to 3
		
		-- En cas d'erreur on affiche un dialogue d'info
	on error sErr number nErr
		display dialog ("" & nErr & " : " & sErr) with icon 0
	end try
end tell

Alors, deux petites subtilités :

1. Pas de boucle dans ce code, on travaille directement avec une liste d'alias, ce que le Finder sait très bien faire, même pour les duplis :up:

2. Les fichiers alias ne sont pas fabriqués à partir des originaux mais bien à partir des duplis, histoire qu'ils pointent sur ces derniers :whistling:

@+ :)

Ce message a été modifié par Fredo d:o) - 09 octobre 2012 - 05:45 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#16 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 09 octobre 2012 - 05:16

Bon, une petite dernière pour la route... uniquement pour les amoureux des codes minimalistes :w00t:

set {sSource, sCible} to {(choose folder without invisibles), (choose folder without invisibles)}
tell application "Finder"
	try
		make new alias to (duplicate (delete (every file of entire contents of sSource)) to sCible) at sSource
		set label index of sSource to 3
	on error sErr number nErr
		display dialog ("" & nErr & " : " & sErr) with icon 0
	end try
end tell

:yahoo:

Ce message a été modifié par Fredo d:o) - 09 octobre 2012 - 05:23 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#17 Amarok II

Amarok II

    NeoAdmin

  • Administrateurs
  • PipPipPipPipPipPip
  • 1 472 Messages :
  • Configuration:Un petit truc en alu avec un grand rectangle lumineux qui affiche des choses qui bougent quand je chatouille un autre truc en alu, là... tout plat.
  • Sexe:Mystère
  • Localisation:Perpignan, France
  • Passions:MacFr bien sûr !

Posté 09 octobre 2012 - 09:20

Salut Fredo :)
tu ne passe pas souvent, mais c'est toujours un plaisir de te lire :)

MacBook Pro (13", fin 2012)
8Go RAM - 256Go SSD - 1To HD

Technicien certifié ACMT et plein d'autres trucs...

"On peut voir de bien des façons. On peut être aveugle de bien des façons." (Frank Herbert, Dune)

"Tu ne feras point de machine à l'esprit de l'homme semblable." (Frank Herbert, Dune)


#18 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 09 octobre 2012 - 11:41

Bonjour

Si un grand nombre de fichiers, à voir si avec les liens symbolique on gagnerais pas beaucoup de place sur le volume.

Il arrive qu'un alias soit plus gros que l'original, un lien par contre fait chez moi que 4 Ko.

@+

Ce message a été modifié par csimple0-N - 09 octobre 2012 - 11:46 .


#19 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 09 octobre 2012 - 14:30

Bonjour

un test pour savoir si ma précédente réponse est valable.

Mon dossier de fonds d'écran (images minimum 1920X1200 24 pouces)

107 images seulement (dossier personnel, les images changent toutes les 15 minutes).

Dossier: 142 Mo, 148 466 351 octets

Dossier alias: 5,7 Mo, 5 773 993 octets

Dossier liens symbolique: 456 Ko, 31 403 octets

Mes résultats sont sans doutes faux pour vous, jusqu'à Léopard un Ko faisait 1024 octets, a partir de Snow Léopard 1 Ko octet fait 1000 octets

Donc mon idée n'est valable que si on gère des Milliards de fichiers, sur un petit disque dur.

Mon code légèrement modifié, pour tester avec des liens.

Code
set dossier_original to choose folder -- Choix du dossier

-- Nom du dossier sélectionné
set {displayed name:nom_Dossier} to info for dossier_original as alias

tell application "Finder"
	
	-- Si le dossier de réception des alias n'existe pas
	if not (folder nom_Dossier exists) in dossier_original then
		-- Création du dossier des alias dans le dossier sélectionné
		make new folder at dossier_original with properties {name:nom_Dossier}
		-- Label jaune à ce nouveau dossier
		set label index of folder (dossier_original & nom_Dossier as string) to 3
	else
		display dialog "Dossier déjà utilisé" -- Pour ne plus utiliser ce dossier si il existe
		return
	end if
	
	try
		set chemins_Fichiers to (files of entire contents of folder dossier_original) as alias list -- Si plusieurs fichiers existent
	on error
		set chemins_Fichiers to ((files of entire contents of folder dossier_original) as alias) as list -- Si un seul fichier trouvé (évite une erreur)
	end try
	
	repeat with fichier_Lue in chemins_Fichiers
		set {displayed name:nom_Fichier} to info for fichier_Lue as alias -- Nom du fichier lue
		try
			-- Création du lien symbolique (trouvé sur le web, je suis nul en code pour le terminal)
			set chemin_UNIX to POSIX path of (fichier_Lue)
			if chemin_UNIX ends with "/" then set chemin_UNIX to text 1 thru -2 of chemin_UNIX
			do shell script "ln -s " & quoted form of chemin_UNIX & " " & quoted form of (chemin_UNIX & ".sym")
			-- Déplace le lien symbolique dans le dossier de réception
			move file (nom_Fichier & ".sym" as string) in folder dossier_original to folder (dossier_original & nom_Dossier as string)
		end try
	end repeat
	
end tell

Mes excuses Fredo d:o), c'est juste pour t'obliger à créer cette version. :hypocrite: :hypocrite: :whistling:

Cordialement

Jl

#20 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 09 octobre 2012 - 16:39

Salut Amarok et à tous :)

Ravi aussi de venir vous faire un petit coucou, je constate avec plaisir qu'il y a toujours un peu d'animation par ici, c'est rassurant :)

Sinon, csimple0-N, je comprends ton soucis avec les Alias et je trouve ton code très bien, étant donnée qu'il y a une opération utilisant une commande Shell, il n'est pas possible de traiter la liste des fichiers autrement que par une boucle, je ne vois donc pas d'amélioration notable à apporter à ton code. :clap:

Bref, tout ça est très bien, j'ai même découvert dans ton code une nouvelle syntaxe d'affectation assez sympa, que je ne connaissais pas, c'est génial :yahoo:

@+ :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#21 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 10 octobre 2012 - 09:15

Bonjour,

Ce forum est vraiment sympathique !
J'ai tendance à limiter l'utilisation des listes sur les actions de fichier car en cas de problème/plantage, la reprise est plus facile sur des boucles repeat, mais je m'incline humblement devant l'élégance de vos scripts Fredo et csimple0-N !
Puisque le challenge est amusant, pourquoi ne pas supprimer aussi la boucle du script de csimpl0-N faisant appel au shell...
... et en le remplaçant par une seule instruction do shell qui contient elle même la boucle :

Voici donc juste une proposition pour cette partie de script (le reste je ne peux faire mieux que vos codes précédents !) :

set Dossier_Original to choose folder -- Choix du dossier contenant les fichiers
set Dossier_Alias to choose folder -- Choix du dossier où seront crées les alias (supposé vide)

do shell script "for file in `find " & quoted form of (POSIX path of Dossier_Original) & " \"*.*\"" & " `; do ln -s $file " & quoted form of (POSIX path of Dossier_Alias) & " ;done"

Ce qui donne en commande Unix pour des dossiers du bureau : for file in `find ~/Desktop/source/ "*.*" `; do ln -s $file ~/Desktop/Dest ;done"
Attention à la frappe : le caractère ` est celui sous le signe £ d'un clavier français

Tous les fichiers du dossier original ont alors un alias crée dans le dossier alias, avec le même nom. Il est possible de filtrer seulement certains type de fichiers en changeant le "*.*" en autre chose.

Qu'en pensez vous ?
Cordialement

#22 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 678 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 10 octobre 2012 - 09:52

Salut Fredo :)
tu ne passe pas souvent, mais c'est toujours un plaisir de te lire :)

+1000 comme on dit :anniversaire:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#23 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 11 octobre 2012 - 17:13

Bonsoir csimple0-N


Bonjour

Après test avec mon nouvel ordinateur, il se trouve que sous Mountain Lion problème.

Voir les explications dans ce code.
set dossier_original to choose folder -- Choix du dossier

-- Nom du dossier sélectionné
set {displayed name:nom_Dossier} to info for dossier_original as alias

tell application "Finder"
	
	-- Si le dossier de réception des alias n'existe pas
	if not (folder nom_Dossier exists) in dossier_original then
		-- Création du dossier des alias dans le dossier sélectionné
		make new folder at dossier_original with properties {name:nom_Dossier}
		-- Label jaune à ce nouveau dossier
		set label index of folder (dossier_original & nom_Dossier as string) to 3
	else
		display dialog "Dossier déjà utilisé" -- Pour ne plus utiliser ce dossier si il existe
		return
	end if
	
	try
		set chemins_Fichiers to (files of entire contents of folder dossier_original) as alias list -- Si plusieurs fichiers existent
	on error
		set chemins_Fichiers to ((files of entire contents of folder dossier_original) as alias) as list -- Si un seul fichier trouvé (évite une erreur)
	end try
	
	repeat with fichier_Lue in chemins_Fichiers
		-- Avec Léopard une capture d'écran donne comme nom Image 1.png (du moins chez moi) et displayed name donne comme nom Image 1.png
		-- Avec Mountain Lion 8, la même capture d'écran me donne comme nom Capture d'écran 2012-10-11 à 12.41.22.png et displayed name donne comme nom Capture d'écran 2012-10-11 à 12.41.22 (donc manque l'extension)
		-- Raison, pourquoi ces lignes avec les  sont modifiées pour Mountain Lion
		set {displayed name:nom_Fichier, name extension:ext} to info for fichier_Lue as alias -- Nom du fichier lue 
		
		try
			-- Création du lien symbolique (trouvé sur le web, je suis nul en code pour le terminal)
			set chemin_UNIX to POSIX path of (fichier_Lue)
			
			-- La ligne ci-dessous n'est utilisée que pour créer un lien symbolique pour un dossier (je la garde pour le plaisir)
			--	if chemin_UNIX ends with "/" then set chemin_UNIX to text 1 thru -2 of chemin_UNIX
			
			-- Création du lien symbolique dans le dossier original
			do shell script "ln -s " & quoted form of chemin_UNIX & " " & quoted form of (chemin_UNIX & ".sym")
			
			-- Déplace le lien symbolique dans le dossier de réception
			move file ((nom_Fichier & "." & ext as string) & ".sym" as string) in folder dossier_original to folder (dossier_original & nom_Dossier as string) -- 
		end try
	end repeat
	
end tell

J’ai une question :
Tu mentionnes l’option si l’on désire que les alias s’affichent avec les images des originaux si elles existent.
Le « make alias » donne déjà des icones avec image de l’original et aussi dans l’aperçu de lire les informations (en tout cas sur Snow Leopard).
N’est-ce pas le cas sur Leopard ou fais tu référence à autre chose ?

Un test avec Léopard et Mountain Lion (tu me dit qu'avec snow Léopard ce problème n'existe pas).

Un cmd 4 pour faire une copie d'image sur le bureau.
Un cmd i de cette image sur le bureau, me montre une image d'icône générique en haut à gauche de la fenêtre.

Les alias utilisent cette icône.

C'est pour éviter ça, que je demandais si l'on devait demander au code de gérer ce problème.

Une création d'un fichier temporaire.
Une boucle repeat pour lire tous les fichiers images contenu dans le dossier.
Le terminal se charge alors de transformer ces icônes génériques en icônes des images (sans ouvrir aucunes fenêtres)

Chez moi, gère ces fichiers icônes: bmp, gif, jp2, JPG, exr, pdf, psd, PICT, png, SVG, tga, tiff, SGI, icns (et sans doute d'autres).

Supprimer le fichier temporaire.

A tester ce nouveau code avec Mountain Lion

Cordialement

JL

#24 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 11 octobre 2012 - 22:19

Bonsoir Csimple0-N,

Csimple0-N a décrit :
Un test avec Léopard et Mountain Lion (tu me dit qu'avec snow Léopard ce problème n'existe pas).


Ta réponse m'a fait douter de la présence d'icône sur les alias, aussi ai-je refais des essais et le résultat me surprend.

En effet, j'avais fais les premiers tests avec des fichiers qui traînaient sur mon bureau.
Les alias crées, tant avec commande L qu'avec les script Applescript ou Shellscript, avaient tous l'icône du fichier original.
J'ai refais le test avec un fichier de copie d'écran, comme toi, et... j'ai l'icône par défaut d'un fichier Jpeg,....comme toi !

Je refais l'essai avec des fichiers Word, Excel, Intaglio, Final Cut pro, Photoshop, ... tous donnent un alias avec l'image du fichier d'origine.
j'ai finalement essayé avec des fichiers JPEG...
Si le fichier d'origine a l'icône représentant la photo (pas l'aperçu, mais l'icône), alors l'alias reprends le même icône.
Si le fichier d'origine n'a pas d'icône (bien que le Fidner l'affiche avec l'image grâce à l'aperçu), alors l'alias n'a que l'icône par défaut.

Il semble donc bien que Leopard, Lyon et Snow leopard se comporte de la même façon, et que l'icone de l'alias soit exactement celui du fichier d'origine... à condition qu'il en ait un.
Suis-je clair ?
Cordialement

#25 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 12 octobre 2012 - 09:08

Bonjour

Je parle d'images.

Dans un dossier ouvert, si l'aperçut se retrouve avec un cadre c'est souvent qu'il ne possède pas l'icône de cette image.

Donc l'alias se retrouve avec l'icône générique, sauf si l'on lui crée cette icône.

Ma recherche faite, et simplement pour que les alias affichent les images plutôt que les icônes génériques de ces fichiers.

Plus facile pour savoir quel fichier on recherche.

Si l'on a quelques fichiers à traiter, on le fait manuellement.

Pour plusieurs dizaines de fichiers, je préfère le faire en automatique, c'est plus rapide.

@+

#26 PBell

PBell

    Membre

  • Membres
  • Pip
  • 25 Messages :
  • Configuration:Imac27 i7- Snow Leopard et Yosemite
  • Sexe:Masculin
  • Localisation:Ile de France

Posté 13 octobre 2012 - 08:31

Bonjour Csimple0-N,
Il semble qu'en Applescript, la manipulation d'icône de fichiers soit limitée par Apple.
En effet, les propriétés d'un item de Finder contiennent bien un champ Icon, mais celui-ci est de la class "icon family", qui est selon les termes Apple est "NOT AVAILABLE YET"....!

Que reste-t-il ?
Passer par le copier coller de l'icône via la fenêtre des informations Finder (en utilisant les keystroke pour Command I, Tab, Command C), puis la même chose pour l'alias, mais avec Commande V à la fin pour coller l'icône dans la fenêtre info de l'alias.
J'ai testé, mais cela n'est pas très élégant !

Sinon, Il y a une fonction Automator toute prête "Ajouter une icône vignette aux fichiers image".
- Avantage: Cela fonctionne parfaitement sans développement.
- Inconvénient : C'est limité aux fichiers de type image. Mais comme en général les fichiers non images ont déjà un icône, leur alias en aura aussi un.

Cordialement

#27 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 13 octobre 2012 - 12:35

Bonjour

Bonjour Csimple0-N,
Il semble qu'en Applescript, la manipulation d'icône de fichiers soit limitée par Apple.
En effet, les propriétés d'un item de Finder contiennent bien un champ Icon, mais celui-ci est de la class "icon family", qui est selon les termes Apple est "NOT AVAILABLE YET"....!

J'utilise avec des commandes du terminal, et aucun problème pour le moment.

Sinon, Il y a une fonction Automator toute prête "Ajouter une icône vignette aux fichiers image".
- Avantage: Cela fonctionne parfaitement sans développement.

Je n'ai jamais utilisé Automator, je préférais les premières versions d'AppleScript qui permettaient de créer des codes (simple) sans écrire une ligne.

- Inconvénient : C'est limité aux fichiers de type image. Mais comme en général les fichiers non images ont déjà un icône, leur alias en aura aussi un.

Tu as raison, n'est valable que pour avoir les images comme icônes.

Mon ApplesScript, utilisé en Applet où Dropplet.

Ce qu'il fait.

Choix d'une image, créer l'icône.

Choix d'un dossier, demande si il faut gérer les icônes seulement de fichiers image que de ce dossier, où si il faut prendre en compte en plus des images de ses sous-dossiers.

Défaut: Si beaucoup d'images, des fichiers Icon sont créer, et ça prend de la place sur les DDs.
Avantage: On est sur que les images d'un dossier seront affichées en icônes et non en fichiers génériques (ce qui arrive parfois).

Cordialement

JL

#28 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 13 octobre 2012 - 13:06

Bonjour à tous :)

Salut ZeKiller, c'est vrai, je passe moins souvent, disons que d'autres sites ont mobilisé mon temps, mais j'essai de jeter un coup d'oeil régulièrement...

Il semble qu'en Applescript, la manipulation d'icône de fichiers soit limitée par Apple.
En effet, les propriétés d'un item de Finder contiennent bien un champ Icon, mais celui-ci est de la class "icon family", qui est selon les termes Apple est "NOT AVAILABLE YET"....!


Ce "NOT AVAILABLE YET" s'explique par une raison historique qui vient des anciens systèmes Mac, où la gestion des icônes étaient plus facile à faire puisque à cette époque les fichiers possédaient des ressources propres et AppleScript permettait d'en manipuler certaines directement (comme les icônes donc).

Depuis le passage à OsX, les fichiers ne possédant plus des ressources, la gestion des icônes a dû être repensée et du coup les commandes AS correspondantes sont devenues inutilisables et parfaitement inutiles puisque, àmha, ont pourra attendre longtemps avant de voir cette fonctionnalité revenir.

Du coup, il faut "bidouiller" comme on peut, et les commandes Shell sont devenue une solution tout-à-fait envisageable, mais bon, comme c'est un langage que je ne maîtrise absolument pas, je laisse ça volontiers aux plus experts.

:)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#29 csimple0-N

csimple0-N

    Habitué(e)

  • Membres
  • PipPip
  • 172 Messages :

Posté 13 octobre 2012 - 14:13

Bonjour à tous :)

Du coup, il faut "bidouiller" comme on peut, et les commandes Shell sont devenue une solution tout-à-fait envisageable, mais bon, comme c'est un langage que je ne maîtrise absolument pas, je laisse ça volontiers aux plus experts.

:)

Bonjour

Puis-je sans vous manquer de respect, vous envoyer mon code (en MP) qui du moins je pense aide bien pour régler ce problème d'affichage d'icônes.

:whistling:

Cordialement

JL

#30 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 13 octobre 2012 - 17:24

Puis-je sans vous manquer de respect, vous envoyer mon code (en MP) qui du moins je pense aide bien pour régler ce problème d'affichage d'icônes.


@Jean-Louis : non, non et merci !

Non, tu ne me manques nullement de respect, au contraire, mais si tu tentais d'être un peu moins formel entre nous, qui échangeons depuis bien longtemps ici pour nous permettre des rapports plus conviviaux, ce serait pas mal je pense... :)

Non, ne m'envois pas de codes par message privé Stp, à moins que j'en fasse la demande explicite, même si le sujet est intéressant, la gestion des icônes ne fait pas partie de mes préoccupations actuelles, et puis, si tu souhaites partager un code, les forums sont fait pour ça non ? :yahoo:

Merci, et encore merci car tu fais preuve de beaucoup de sollicitude, très touchante et que j'apprécie à sa juste valeur, tâche seulement d'assouplir un peu les formes en commençant, par exemple, par ne plus me vouvoyer, ça devient un peu gênant depuis le temps... :blink:

:)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb




0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)