Précédent   Forum du club des développeurs et IT Pro > Systèmes > Mac > AppleScript
AppleScript Forum d'entraide sur le langage de Scripting AppleScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/11/2012, 11h43   #1
dpk98
Invité régulier
 
Homme
Inscription : novembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 4
Points : 9
Points : 9
Par défaut "renommage" de fichiers

Bonjour,

Je voudrais automatiser un "renommage" de fichiers :

Pour chaque nom dans un dossier

rechercher le 1er caractère alphabetique
rechercher le dernier tiret
recopier du 1er alpha au dernier tiret, en début de nom

exemple

000000138432-nom1_nom2-azerty

devient

nom1_nom2-000000138432-nom1_nom2-azerty


Comment faire : applescript, automator ou commande du type grep ou sed ?
Pourriez-vous m indiquer comment coder cette manip ? Merci d avance.



Didier

MBP15 2010 MacOS 10.6.8
dpk98 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2012, 08h12   #2
PBELL
Membre habitué
 
Homme Philippe
Directeur de projet
Inscription : septembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : septembre 2010
Messages : 58
Points : 133
Points : 133
Par défaut renommage de fichier

Bonjour dpk98,
Pour renommer des fichiers, il y a une action Automator toute prête, qui permet de numéroter les fichiers, mais pas qui permet d'appliquer la règle que tu souhaites.
Donc AppleScript est fait pour ça. Voici un petit code rapide (qui pourrait sans doute être optimisé) avec des commentaires pour plus de clarté.

Attention, je ne gère pas les erreurs, par exemple si le nom de ton fichier n'a pas de tiret ou pas d'alpha (peu probable) ou si le premier alpha est après le dernier tiret ! A toi de voir ce qu'il faut faire dans ces cas. Dans mon script, je ne fais rien pour l'instant !

Tu ouvres l'AppleScript editor, tu copy/paste le code ci-dessous, et ..hop !
Je n'utilise aucune fonction spéciale, donc cela devrait tourner sur un peu près toutes les versions d'OS X...
Bonne journée

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
-- renome les fichiers d'un dossier avec des règles 
tell application "Finder"
	-- Sélectionne le dossier
	set F to choose folder with prompt "Sélectionner le dossier dont il faut changer les fichiers :"
	
	-- Sélectionne les fichiers du dossier 
	set Listfichiers to every file of the folder F
	
	-- confirmation finale ! (par défaut c'est cancel)
	display dialog "Confirmer le changement irréversible des noms des " & (count of Listfichiers) & " fichiers du dossier " & F & " !!" with icon stop default button 1
	
	-- initialise les caractères alphabetiques
	set Alpha to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
	set Alpha to Alpha & {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Y", "Z"}
	
	-- changement en boucle
	repeat with i from 1 to (count of Listfichiers)
		-- lit le nom du fichier
		set Ancien to (name of item i of Listfichiers)
		-- L = longeur du nom
		set L to length of Ancien
		-- initialise les positions des lettres et des tirets
		set PosAlpha to 0
		set PosTiret to 0
		
		-- boucle sur les lettres du nom est extrait les positions du premier alpha et dernier tiret
		repeat with c from 1 to L
			if (PosAlpha = 0) and ((character c of Ancien) is in Alpha) then set PosAlpha to c
			if (character c of Ancien is "-") then set PosTiret to c
		end repeat
		
		-- vérifie que c'est correct (PosAlpha < PosTiret)
		if PosAlpha < PosTiret then
			-- Nouveau nom = ancien (de PostAlpha à PosTiret) + Ancien
			set Nouveau to (characters PosAlpha thru PosTiret of Ancien) & Ancien
			--change le nom du fichier
			set the name of item i of Listfile to Nouveau
		else
			-- il faudrait rajouter ici la gestion des erreurs lorsque il n'y a pas de tirets ou d'alpha ou le dernier tiret est avant l'alpha...
		end if
		
	end repeat
	
	-- informe l'utilisateur
	display dialog "Les " & (count of Listfichiers) & " fichiers ont été renommés" with icon caution
end tell
PBELL est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2012, 14h50   #3
dpk98
Invité régulier
 
Homme
Inscription : novembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 4
Points : 9
Points : 9
merci infiniment PBELL de m avoir gentillement et clairement répondu (avec commentaires) Je n en espérais pas tant.
Je vais essayer
Merci,
Didier
dpk98 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2012, 16h24   #4
dpk98
Invité régulier
 
Homme
Inscription : novembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 4
Points : 9
Points : 9
Merci.
J ai "corrigé" une erreur Listfiles au lieu de Listfichiers (fastoche).
Mais erreur d execution (voir PJ)
Peux-tu m aider encore ?
Images attachées
Type de fichier : jpg Capture d’écran 2012-11-22 à 16.01.11.jpg (102,2 Ko, 4 affichages)
dpk98 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2012, 08h39   #5
PBELL
Membre habitué
 
Homme Philippe
Directeur de projet
Inscription : septembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : septembre 2010
Messages : 58
Points : 133
Points : 133
Par défaut renommer des fichiers

Bonjour dpk98,
c'est effectivement une erreur..qui n'aurait pas du fonctionner chez moi aussi...curieux...? je ferai des tests complémentaires ce week end !!

En attendant, l'erreur est simple à corriger :
il faut changer l'instruction :

set Nouveau to (characters PosAlpha thru PosTiret of Ancien) & Ancien

en :

set Nouveau to (text PosAlpha thru PosTiret of Ancien) & Ancien

La première assigne à la variable Nouveau des caractères, la seconde version assigne un texte. Les noms du Finder doivent être des textes !

Cordialement
PBELL est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2012, 12h06   #6
dpk98
Invité régulier
 
Homme
Inscription : novembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 4
Points : 9
Points : 9
Bonjour PBELL et merci.

La modification fonctionne.
Je pense à m'initier à Applescript/Automator maintenant (j'ai été AP sur mainfames IBM (MVS VM/CMS CICS DL1 assembleur 370) entre 1980 et 1992).

Merci de ta gentillesse.

Didier
dpk98 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h39.


 
 
 
 
Partenaires

Hébergement Web