script, programme question d'un débutant

LACK

Membre confirmé
21 Novembre 2006
109
2
Donc si quelqu'un a renommé son disque, le script ne marchera pas.

Y a t'il une parade?
 

zacromatafalgar

Membre émérite
Donc si quelqu'un a renommé son disque, le script ne marchera pas.

Y a t'il une parade?
Oui il y a une parade si les dossiers sont toujours aux mêmes endroits, comme je te l'expliquait au message 15… ;)
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Pour l'utilisation sur un autre ordi, si tes dossiers sont toujours aux mêmes endroits (dans le dossier applications, sur le bureau ou dans le dossier documents) il est possible de mettre des chemins relatifs. Chemins qui permettront au script de fonctionner quel que soit le nom de l'utilisateur et du disque dur…;)

par chemin relatif que veux tu dire?

si je mets simplement Applications en racine dans mon script il s'adaptera ou je dois ecrire quelque chose.

De plus, sais tu si l'on peut mettre un mot de passe à l'ouverture de l'application du script?


merci
 

zacromatafalgar

Membre émérite
Pour que tu te fasses une idée sur les chemins, jette un œil sur cette page, oui on peut mettre un mot de passe…
Excuse moi mais je dois m'en aller, je reviendrai demain en milieu d'après midi… bonne continuation… ;)
 

LACK

Membre confirmé
21 Novembre 2006
109
2
merci a plus tard bonne soiree
 

LACK

Membre confirmé
21 Novembre 2006
109
2
- ce que tu m'as donné pour prendre les fichiers dans un dossier fonctionne mais si on veut qu'il prenne aussi les sous-dossiers de ce dossier ???

- J'ai regardé le site, j'ai essayé mais ca n'a pas marché (j'ai pas du comprendre)

que dois je mettre dans le script pour qu'il prenne le fichier "applications par défaut chez l'utilisateur"

- De plus comment on fait la liaison pour avoir 2 "scripts" ou plus dans le script

Ex : celui pour avoir le dossier par défaut + ma demande originale. car il me met qu'il y a deja un "run" ou quelque chose comme ca. J'ai essayé and et d'autres mais c'est pas ca

merci beaucoup
 

LACK

Membre confirmé
21 Novembre 2006
109
2
voila la base =

try
set la_reponse to display dialog "Entrez votre code?" default answer "0000"
display dialog "Vous avez repondu \"" & text returned of la_reponse & "\"" buttons "OK" default button "OK"
on error
display dialog "Vous avez clique sur \"Cancel\"" buttons "OK" default button "OK"
end try


ENSUITE CELUI-LA =


set chemin_vers_user to (path to applications folder) as string

display dialog "Voici le chemin vers le dossier utilisateur :" default answer chemin_vers_user


ENSUITE CELUI-LA =


property D1 : "Macintosh HD:Applications:Dossier1:"
property D4 : "Macintosh HD:applications:Dossier4:"

on run
tell application "Finder"
duplicate every document file of folder D1 to D4 replacing yes
end tell
end run



Donc j'aimerais comprendre comment =

- Avoir le dossier Application par défaut pour utiliser sur d'autres MAC
- Faire une liason c'est à dire Remplacer : " ENSUITE CELUI-LA"
- Pouvoir prendre les fichiers d'un dossier plus les sous-dossiers de celui-ci.



Merci d'avance :zen:
 

obi wan

Membre d’élite
Club MacG
19 Mars 2003
1 628
86
ben en shell tu as accés à des variables d'environnement genre $HOME, ça permet de s'affranchir de ces problème de portailité inter-machines.
 

LACK

Membre confirmé
21 Novembre 2006
109
2
merci à toi mais j'y connais rien donc le shell !?

zacromatafalgar m'a bien aidé car il s'est adapté à mes besoins, j'espere qu'il pourra continuer de m'aider.
 

zacromatafalgar

Membre émérite
Donc j'aimerais comprendre comment =

- Avoir le dossier Application par défaut pour utiliser sur d'autres MAC
- Faire une liason c'est à dire Remplacer : " ENSUITE CELUI-LA"
- Pouvoir prendre les fichiers d'un dossier plus les sous-dossiers de celui-ci.
Me revoilà…:)

Alors on suppose que les dossiers "Dossier1" et "Dossier4" sont présents sur les macs, on va donc construire le chemin vers les dossiers…

Bloc de code:
--on obtient le chemin vers le dossier "Applications" quel que soit le nom du disque
property pathToAppFolder : (path to applications folder) as string

--on ajoute le nom du dossier pour avoir le chemin complet
property dossier1 : (pathToAppFolder & "Dossier1:")
property dossier4 : (pathToAppFolder & "Dossier4:")

on run
	try--je n'ai pas modifié ton bloc try, on verra plus tard
		set la_reponse to display dialog "Entrez votre code?" default answer "0000"
		display dialog "Vous avez repondu \"" & text returned of la_reponse & "\"" buttons "OK" default button "OK"
	on error
		display dialog "Vous avez clique sur \"Cancel\"" buttons "OK" default button "OK"
	end try
	
	
	tell application "Finder"
		duplicate entire contents of folder (dossier1 as alias) to (dossier4 as alias) replacing yes 
--j'ai remplacé "every document file" par "entire contents" afin de dupliquer l'ensemble du contenu… 
	end tell
end run
Tu obtenais une erreur car il ne doit y avoir qu'un bloc run dans un script, il faut donc mettre tes autres bout de script à l'intérieur du bloc run…
J'espère que je suis assez clair dans mes explications, je ne suis pas très pédagogue… ;)
 

obi wan

Membre d’élite
Club MacG
19 Mars 2003
1 628
86
Ouais, en shell, un script .sh que tu mets à la racine de ton dvd avec ces 3 lignes ça suffit :

Bloc de code:
cp -R ./A/D1 $HOME/Applications/uneApp/B/D1;
cp -R ./A/D2 $HOME/Applications/uneApp/C/D2;
cp -R ./A/D3 $HOME/Applications/uneApp/G/D3;
après un coup de chmod +x sur le fichier et il se retrouve executable...
Ou au pire dans automator on peut mettre un élément "éxecuter un script shell".

Lack, si tu peux décrire précisemment la structure des dossiers départ et arrivée, ce sera pas très long de te faire un truc simple, mais là... :/
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Merci beaucoup!

Obi wan, merci pour ta proposition mais j'ai préféré rester sur le script qu'on avait commencé comme ca, ca m'a permi de comprendre un peu et de le faire moi-meme (pas vraiment mais bon, j'ai écris un peu ;) )

ZacroMTFLGR, je viens d'essayer ca marche nickel merci vraiment beaucoup. "Pas pedagogue" allons quand meme!

C'est nickel vraiment merci pour tous.

Le code que j'ai mis n'est pas vraiment un mot de passe a rentrer, comment peux ton faire pour avoir au lancement de l'application script un vrai mot de passe qui acceptera de lancer le script si bonne reponse?
 

zacromatafalgar

Membre émérite
Le code que j'ai mis n'est pas vraiment un mot de passe a rentrer, comment peux ton faire pour avoir au lancement de l'application script un vrai mot de passe qui acceptera de lancer le script si bonne reponse?
Oui j'avais bien remarquer que le code n'était pas vraiment opérationnel…

Il faut d'abord mettre en property le bon mot de passe, à la suite des autres properties puis on va afficher le dialogue de saisie et comparer le résultat avec le mot en property.
Si les mots sont identiques, à la majuscule près, on procède à la duplication sinon on retourne un message d'erreur.

Le code complet :
Bloc de code:
property pathToAppFolder : (path to applications folder) as string
property dossier1 : (pathToAppFolder & "Dossier1:")
property dossier4 : (pathToAppFolder & "Dossier4:")
property pass : "essaiPass"

on run
	
	set thePass to text returned of (display dialog "mot de passe:" default answer "" with hidden answer)
	
	considering case --respect de la casse
		if thePass = pass then --si le mot de passe est bon
			--on procède à la duplication
			tell application "Finder"
				duplicate entire contents of folder (dossier1 as alias) to (dossier4 as alias) replacing yes
			end tell
			
		else --sinon
			--message d'erreur
			beep
			display dialog "Mauvais mot de passe"
		end if
	end considering
	
	
end run
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Merci, je viens de le faire mais quand la reponse est fausse il copie quand meme les fichiers! ?
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Ok autant pour moi j'avais pas enlever en bas "tell application finder...."

C'est de ma faute bon merci pour tous je vais essayer de finaliser tout ca merci.

MERCI MERCI MERCI
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Tout est ok comment je peux faire si je fais un Fichier ZIp et que je voudrais que quand on double clique dessus qu'il décompresse le contenu automatiquement dans Applications ?

Et qu'il soit intégrer au ZIP biensur.

merci
 

zacromatafalgar

Membre émérite
Tout est ok comment je peux faire si je fais un Fichier ZIp et que je voudrais que quand on double clique dessus qu'il décompresse le contenu automatiquement dans Applications ?

Et qu'il soit intégrer au ZIP biensur.

merci
C'est possible avec un code :
Bloc de code:
set theArchive to "Chemin:de:ton:Archive.zip"
set theTarget to (path to applications folder) as string--ça tu connais…
do shell script "/usr/bin/unzip -u " & (quoted form of POSIX path of theArchive) & " -d " & (quoted form of POSIX path of theTarget)
("quoted form" pour que les espaces et accents ne provoquent pas d'erreur dans le terminal, "posix path" pour transformer les chemins type Finder :)) en type terminal (/), on utilise une commande du terminal pour extraire (unzip) exécutée dans applescript grâce à "do shell script)

Je ne comprends pas trop la dernière phrase "Et qu'il soit intégrer au ZIP", si c'est le script ce n'est pas possible…
 
  • J’aime
Réactions: LACK

LACK

Membre confirmé
21 Novembre 2006
109
2
c'est à dire que sur mon DVD quand je l'ouvre je dois avoir :

Le script application (qui va faire ce qu'on a dit) et le fichier ZIP?

Ce que je disais est certainement bete en effet je voulais seulement avoir un fichier qui s'affiche sur le DVD rassemblant les 2 !
 

LACK

Membre confirmé
21 Novembre 2006
109
2
je n'arrive pas à prendre un deuxieme dossier Quelle est mon erreur?

--on procède à la duplication
tell application "Finder"
duplicate entire contents of folder (D1 as alias) to (D4 as alias) & (D2 as alias) to (D5 as alias) replacing yes
end tell


la premiere fois j'avais ecrit :

--on procède à la duplication
tell application "Finder"
duplicate entire contents of folder (D1 as alias) to (D4 as alias) replacing yes
duplicate entire contents of folder (D2 as alias) to (D5 as alias) replacing yes
end tell

mais marche pas non plus?

PS : pour le zip il est sur dvd quel est le chemin standard?