Besoin d'aide pour nommer des fichiers

your_majesty78

Membre enregistré
17 Décembre 2012
3
0
Bonjour,

Je débute en applescript et je souhaite faire une zone de dépot (forme d'application) pour renommer des fichiers sans toucher au 7 premiers caractères et si la suite contient le mot SFR, il faudrait que le fichier se nomme 1234567s et si le fichier contient BBOX il faudrait qu'il se nomme 1234567b.

Voilà ce que j'ai déjà écris (par encore sous la forme zone de dépôt) :
set monFichier to "/Users/Maxx/Desktop/1234567_Conversion MOV vers BBOX.ts"
set AppleScript's text item delimiters to {"/"}
set fichier_isole to text item -1 of monFichier
set AppleScript's text item delimiters to "."
set nomSansExtension to first text item of fichier_isole
set nomBBOX to "b"
set nomSfr to "s"
-- EM permet de récupérer le numéro d'EM
set EM to text 1 thru 7 of fichier_isole
-- monSuffixe permet de récupérer la parie du fichier à renommer
set monSuffixe to text 8 thru -1 of nomSansExtension
-- faire les conditions si BBOX alors rename b
tell application "Finder"
if monSuffixe contains "SFR" then set name of (monSuffixe as string) to nomSfr
if monSuffixe contains "BBOX" then set name of (monSuffixe as string) to nomBBOX
end tell

Quand je l'exécute j'ai une erreur : Il est impossible de régler name of "_Conversion MOV vers BBOX" à "b".

Pouriez vous m'aider s'il vous plaît car je sèche sur le sujet.

Merci d'avance.
 
Bonjour,

J'ai trouvé comment renommer de la façon que je souhaite.
Par contre, je souhaite faire un droplet en glissant plusieurs fichiers afin qu'ils soient tous traité or, avec mon code, je ne peux traiter qu'un seul fichier lorsque j'en dépose plusieurs.
J'aurais donc encore besoin de votre aide, voici ce que j'ai écris :

on open monFichier
-- transformer monFichier en string
set AppleScript's text item delimiters to {":"}
set fichier_isole to text item -1 of monFichier
-- récupérer EM en 2 étapes
set Etape1 to text item -1 of (monFichier as string)
set EM to text 1 thru 7 of Etape1
-- récupérer l'extension
set AppleScript's text item delimiters to "."
set Extension to text item -1 of Etape1
-- récupérer la partie à annalyser
set monSuffixe to text 8 thru -1 of Etape1
-- Déclaration des variables pour le renommage
set BBOX to "b"
set SFR to "s"
set Orange to "o"
set CSAT to "c"
-- Condition de renommage
tell application "Finder"
if monSuffixe contains "SFR" then set name of fichier_isole to EM & SFR & "." & Extension
if monSuffixe contains "BBOX" then set name of fichier_isole to EM & BBOX & "." & Extension
if monSuffixe contains "Orange" then set name of fichier_isole to EM & Orange & "." & Extension
if monSuffixe contains "CSAT" then set name of fichier_isole to EM & CSAT & "." & Extension
end tell
end open

Merci d'avance pour votre aide.
 
Bonjour,

J'ai trouvé comment renommer de la façon que je souhaite.
Par contre, je souhaite faire un droplet en glissant plusieurs fichiers afin qu'ils soient tous traité or, avec mon code, je ne peux traiter qu'un seul fichier lorsque j'en dépose plusieurs.
J'aurais donc encore besoin de votre aide, voici ce que j'ai écris :

Bonjour

Bienvenu parmi nous.


Regarde le code ci-dessous pour voir si certaines lignes peuvent t'être utiles pour finaliser ton code.

Bloc de code:
on open mes_Fichiers
	
	tell application "Finder"
		
		repeat with i from 1 to (count item of mes_Fichiers)
			-- Permet à la boucle repeat, si un problème avec un où plusieurs fichiers de continuer son travail
			try
				set fichier_Lue to item i of mes_Fichiers as string
				
				set {name:nom, name extension:Extension} to info for (fichier_Lue as string) as alias
				set dossier_Parent to (text 1 thru ((offset of nom in fichier_Lue) - 1) of fichier_Lue)
				
				if nom contains "BBOX" then -- Si le nom contient cette suite de caractères
					-- nouveau_Nom du premier caractère au délimiteur (ce texte) - 1 pour pas prendre en compte le . de l'extension
					-- à cette variable nouveau_Nom on ajoute la lettre et le point + l'extension
					set nouveau_Nom to (text 1 thru ((offset of "_Conversion MOV vers BBOX" in nom) - 1) of nom) & "b." & Extension as string
				else if nom contains "SFR" then
					set nouveau_Nom to (text 1 thru ((offset of "_Conversion MOV vers SFR" in nom) - 1) of nom) & "s." & Extension as string
				else if nom contains "Orange" then
					set nouveau_Nom to (text 1 thru ((offset of "_Conversion MOV vers Orange" in nom) - 1) of nom) & "o." & Extension as string
				else if nom contains "CSAT" then
					set nouveau_Nom to (text 1 thru ((offset of "_Conversion MOV vers CSAT" in nom) - 1) of nom) & "c." & Extension as string
				end if
				
				-- Écriture des nouveaux noms
				set name of file (nom as string) in folder dossier_Parent to nouveau_Nom
			end try
		end repeat
	end tell
end open

Testé avec Léopard 10.5.8, donc risque qu'il ne fonctionnement avec ton fauve.

Cordialement

JL

@+
 
Merci beaucoup JL pour ton retour.
En plus ton code me paraît bien mieux écrit.

Je vais potasser tout ça.
Encore merci.

Maxx.
Bonjour

Comme tu as la gentillesse de me répondre, et vouloir comprendre ma façon de coder, un autre script.

Normalement il fait le même travail.
Bloc de code:
on open mes_Fichiers
	
	-- Initialisation des variables
	set {lue, lettre} to {{"BBOX", "SFR", "Orange", "CSAT"}, {"b", "s", "o", "c"}}
	
	tell application "Finder"
		
		-- Lecture des différents fichiers sélectionnés
		repeat with chemin_Lue from 1 to (count item of mes_Fichiers)
			
			try
				-- Chemin du fichier lue
				set fichier_Lue to item chemin_Lue of mes_Fichiers as string
				
				-- Recherche du nom et de l'extension
				set {name:nom, name extension:Extension} to info for (fichier_Lue as string) as alias
				
				-- Si c'est une bonne sélection (ts & MOV utilisé par tous ces fichiers)
				if (Extension as string) is "ts" and nom contains "MOV" then
					
					-- Chemin du dossier émetteur et récepteur
					set dossier_Parent to (text 1 thru ((offset of nom in fichier_Lue) - 1) of fichier_Lue)
					
					-- Recherche pour création du nouveau nom
					repeat with controle from 1 to 4
						if nom contains item controle of lue then set trouve to item controle of lettre & ".ts"
					end repeat
					
					-- Écriture du nouveau nom  du fichier lue
					set name of file (nom as string) in folder dossier_Parent to ((text 1 thru ((offset of "_" in nom) - 1) of nom) & trouve as string)
					
				end if
			end try
		end repeat
	end tell
end open

ATTENTION: ne fonctionne que si les sélections se trouvent dans le même dossier.

Dit moi si ça fonctionne chez toi (pour savoir les modifications à faire), Merci.

Bon Noël

Cordialement

JL
 
Dernière édition: