# [APPLESCRIPT] Ajouter du texte à un groupe de fichiers



## Fìx (13 Octobre 2010)

Bonjour à tous!

J'aimerai savoir si il est possible de créer un script pour rajouter un nom à plusieurs fichiers en même temps.

J'm'explique :

Je travaille dans l'impression numérique et vend plusieurs type de produits. J'ai des mises en page toutes faites pour chaque produit.

À chaque nouvelle commande, je copie ces MEP dans un nouveau dossier au nom du client.

Jusque là, je renomme les mises en page en une par une pour rajouter le nom du client.

Exemple : 

Je copie ces modèles de mises en page dans le dossier :


"Totem 800x2000.indd"
"Stand Parapluie.indd"
"Comptoir.indd"

Et les renomme de la sorte :


"NOM DU CLIENT - Totem 800x2000.indd"
"NOM DU CLIENT - Stand Parapluie.indd"
"NOM DU CLIENT - Comptoir.indd"


Le top du top serait donc de pouvoir sélectionner un groupe de fichier, cliquer sur une icône dans le dock, qu'une boîte de dialogue me demande quel préfixe je veux rajouter, que je le tape, et qu'il s'applique à tous les fichiers sélectionnés...


Je n'y connais rien en Applescript, mais j'suis convaincu que ceci est possible, donc si une âme charitable saurait comment faire, j'lui en serais bin reconnaissant! :rose:

Merci d'avance!


----------



## Arlequin (13 Octobre 2010)

salut

bon, je suis une buse en applescript
néanmoins, avec automator, il est très facile de créer une appli pour renommer les fichiers

avec le choix en autre de "rendre séquentiel" (ce que j'utilise pour transformer mes dsc0003.jpg en 2010-aout-XXX.jpg)

Dans ton cas, il suffit de prendre l'option "rajouter du texte" et là tu peux aussi choisir de mettre ce nouveau texte devant ou derrière le nom existant

top du top, en effet, tu sélectionnes tes fichiers, tu les glisses sur l'icone de l'appli créée par automator, une fenêtre s'ouvre et te demande d'entrer le texte à rajouter 


suis je clair ?


edit: capture


----------



## Fìx (13 Octobre 2010)

Merci Arlequin... 

Il se trouve que j'ai déjà cherché du côté d'automator, dans ce coin là d'ailleurs...  ... Mais n'y parviens pas...

En fait, je n'arrive pas à faire en sorte qu'automator me demande à chaque fois QUEL NOM je veux mettre pour CES fichiers? 

Je ne parviens qu'à rajouter un nom, toujours le même, rentré lors de l'enregistrement de l'action...

Ce que je veux, c'est une boîte de dialogue à chaque action qui me demande quoi mettre... (puisque le nom est différent à chaque fois)

C'est possible?


----------



## Arlequin (13 Octobre 2010)

Fìx a dit:


> C'est possible?



oui, bien sûr, mais on est bien d'accord, le nom sera le même pour tous les fichiers sélectionnés ! et de fait différent à chaque fois que tu lances l'action

dans l'action automator, tu ne rentre PAS de nom , donc il te sera demandé à chaque fois ce qu'il faut mettre

il doit certainement exister la possibilité (si ceslinstinct passe par ici) de faire en sorte que cela se fasse automatiquement ("action de dossier") en fonction du nom du dossier, dès que tu y introduit un fichier, mais là ça dépasse mes faibles compétences


----------



## Fìx (13 Octobre 2010)

Arlequin a dit:


> dans l'action automator, tu ne rentre PAS de nom , donc il te sera demandé à chaque fois ce qu'il faut mettre



Fais l'essai, mais, à moins que j'm'y prenne mal, ça ne fonctionne pas... 

L'action s'opère, mais rien ne se passe... Je pense qu'elle ne fait que rajouter ..... le vide laissé dans l'action! :rateau:





Arlequin a dit:


> il doit certainement exister la possibilité (si celinstinct passe par ici) de faire en sorte que cela se fasse automatiquement ("action de dossier") en fonction du nom du dossier, dès que tu y introduit un fichier, mais là ça dépasse mes faibles compétences




Ah vi mais non... :rateau:

C'est une bonne idée à la base...  mais si mes dossiers portent bien le nom du client, ils portent aussi la date du jour! Et nul besoin qu'elle apparaisse dans le nom des fichiers! 

Donc c'est bel et bien une boîte de dialogue dont j'ai besoin! :sick:


----------



## Arlequin (13 Octobre 2010)

Fìx a dit:


> Fais l'essai, mais, à moins que j'm'y prenne mal, ça ne fonctionne pas...



dans les options de l'appli, dans automator donc, pense à cocher "afficher cette action blablabla ..."

edit: ai envoyé un MP à ceslinstinct, wait and see

edit bis: je viens de tester sur plusieurs fichiers, hébé ça merdouille ! car en fait pour chaque fichier il demande quel nom mettre :rose: . Si tu n'as que qques fichiers, pomme c pomme v ça peut l'faire, mais ça risque d'être chiant à la longue 

Sorry, retour sur l'apple script

je passe donc la main


----------



## ceslinstinct (13 Octobre 2010)

Arlequin a dit:


> dans les options de l'appli, dans automator donc, pense à cocher "afficher cette action blablabla ..."
> 
> edit: ai envoyé un MP à ceslinstinct, wait and see


Bonjour


```
-- Choix du préfix
display dialog "Entrez les informations :" default answer "" buttons {"Annuler", "OK"} default button 2 with title "Le préfix"

set prefix to text returned of the result

-- Choix du dossier
set dossier to choose folder with prompt "Dossier émetteur"

tell application "Finder"
	-- Liste des fichiers dans le dossier sélectionné (pas de prise en compte des fichiers dans les sous-dossiers)
	set cheminsFichiers to every file of folder dossier as alias list
	
	repeat with i from 1 to (count (item of cheminsFichiers))
		set fichier to item i of cheminsFichiers as alias -- Chemin du fichier lue
		set {name:nom} to info for fichier -- Nom avec extension du fichier
		set nouvNom to prefix & nom as string -- Nouveau nom à écrire
		set the name of fichier to nouvNom -- Changement de nom du fichier lue
	end repeat
end tell
```

Version à utiliser depuis le Dock



```
-- Toutes les sélections doivent être dans le même dossier

-- Choix du préfix
display dialog "Entrez les informations :" default answer "" buttons {"Annuler", "OK"} default button 2 with title "Le préfix"

set prefix to text returned of the result

set cheminsFichiers to {} -- Pour contrôle si une où plusieurs sélections

tell application "Finder"
	set cheminsFichiers to get selection
	if cheminsFichiers is {} then
		display dialog "Pas de sélection"  buttons {"OK"} default button 1 with title "ATTENTION" giving up after 5
	else
		repeat with i from 1 to (count (item of cheminsFichiers))
			try -- Pour ne pas prendre en compte les dossiers (si pas d'extension)
				set fichier to item i of cheminsFichiers as alias -- Chemin du fichier lue
				if not package folder of (info for fichier as alias) then -- Refuse les applications en bundle
					set {name:nom, name extension:ext} to info for fichier -- Nom avec extension du fichier
					set nouvNom to prefix & nom as string -- Nouveau nom à écrire
					set the name of fichier to nouvNom -- Changement de nom du fichier lue
				end if
			end try
		end repeat
	end if
end tell
```

Testé avec Léopard 10.5.8

@+


----------



## Fìx (13 Octobre 2010)

Génial!!!!!!!! :love: :love: :love: 

Merci beaucoup ceslinstinct! (encore une fois! :rose: )

J'te jure qu'à chaque fois je ne me contente pas de les utiliser, j'les analyse! :rose: ... Mais j'suis tellement nul en anglais que ça fini par m'rebuter! :rateau: 

Encore mille merci!  


_J'ai encore un p'tit détail à ajouter, mais j'vais d'abord essayer de trouver moi même avant de demander! 
_

PS : Arlequin, ton action fonctionne aussi! J'ai pas vu de bug?  Mais j'préfère nettement l'applescript. Plus réactif et surtout, n'imposant pas le glissé déposé!


----------



## ceslinstinct (13 Octobre 2010)

Fìx a dit:


> Génial!!!!!!!! :love: :love: :love:
> 
> Merci beaucoup ceslinstinct! (encore une fois! :rose: )
> 
> ...


Bonjour

Devine pourquoi le code est truffé de commentaires   

@+


----------



## Fìx (13 Octobre 2010)

ceslinstinct a dit:


> Bonjour
> 
> Devine pourquoi le code est truffé de commentaires
> 
> @+



Pour que les truffes les lisent?


----------

