IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

copie un à un


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut copie un à un
    Bonjour, pas expert et nouveau sur ce forum, je n'ai pas trouvé de réponse à un gros souci. Pour des raisons inconnues je ne peux copier, pour sauvegarder des dossiers, que le contenu fichier après fichier depuis un DD dur qui est en train de lâcher vers un autre DD neuf. Est-il possible de trouver ou de faire un script, pour obtenir qu'après avoir copié un fichier depuis un dossier la copie du suivant se fasse automatiquement.
    Merci d'avance de vos conseils

  2. #2
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Par défaut
    Bonjour,

    Désolé, mais ton explication n'est pas très claire.
    Peux-tu expliquer correctement ton problème ?

    D'après ce que je comprends, tu veux faire une sauvegarde de ton disque dur qui est en train de lâcher sur un disque neuf ?
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  3. #3
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 606
    Par défaut
    Bonjour corsicansailor,
    Si je comprends bien, tu as un disque dur endommagé pour lequel tu souhaites récupérer le maximum de fichiers encore lisibles.

    Lorsque tu copies d'un bloc tous les fichiers, la copie plante si l'un des fichiers est illisible à cause de l'état du disque.
    Si d'autres fichiers ne sont pas (encore !) illisibles, tu souhaites les copier.

    Il te faut effectivement un script pour parcourir chaque dossiers et sous dossiers du disque source, et essayer de copier un par un les fichiers.
    Je précise que si les erreurs ne viennent pas des secteurs de fichier eux même, mais de la TOC (en quelque sorte la table des matières de ton disque) tu risques d'avoir beaucoup d'erreurs.

    Quoiqu'il en soit, voici le script ci-dessous qui réponds à ton problème, avec quelques explications :
    1) selection du disque ou dossier source, sélection du volume de destination (le nouveau disque)
    2) appel de la routine de copie: cette routine est placée ainsi afin d'être appelée de façon récursive pour chaque sous dossier rencontré

    Cette routine est parsemée de blocs try/end try afin de ne pas planter si il y a des problèmes de lecture du disque endommagé (il y en aura !).
    A chaque erreur rencontrée, je fais appel à la routine Log qui enregistre, dans un fichier texte "Log_Copie" sur ton bureau, les noms de dossiers/fichiers qui génèrent l'erreur. Tu saura ainsi ce que tu as perdu !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    set Dossier_Source to choose folder with prompt "Sélectionner le dossier contenant les fichiers à copier"
    set Dossier_Dest to choose folder with prompt "Sélectionner le volume de destination"
     
    Copie_Dossier(Dossier_Source, Dossier_Dest)
     
    -- fin du programme principal
     
     
    -- copie de façon récursive le contenu du dossier D_S dans le dossier D_D
    on Copie_Dossier(D_S, D_D)
    	tell application "Finder"
    		-- création du dossier sur le volume de destination
    		set Nom_Dos to name of D_S
    		set New_F to (make new folder at folder D_D with properties {name:Nom_Dos}) as alias
    		set Les_Fichiers to {}
    		try
    			set Les_Fichiers to every file of folder D_S
    		on error
    			log ("impossible de lire les fichiers du dossier " & (D_S as string))
    		end try
    		-- copie des fichiers 1 par 1 avec enregistrement en cas d'erreur
    		repeat with F in Les_Fichiers
    			try
    				duplicate F to New_F
    			on error
    				log ("erreur de copie de " & (F as string) & " du dossier " & Nom_Dos)
    			end try
    		end repeat
    		-- lecteure des sous dossiers de ce dossier
    		set S_Dossiers to {}
    		try
    			set S_Dossiers to every folder of folder D_S
    		on error
    			log ("impossible de lire les dossiers du dossier " & (D_S as string))
    		end try
    	end tell
    	-- appel récursif de cette procédure pour chaque sous dossier
    	repeat with D in S_Dossiers
    		Copie_Dossier((D as alias), New_F)
    	end repeat
    end Copie_Dossier
     
     
    -- sous programme d'enregistreement d'un message dans un fichier text
    on log (msg)
    	set the my_log to ((path to desktop) as text) & "Log_Copie.txt"
    	try
    		-- Ouverture du fichier text : Le Finder le crée si besoin
    		open for access file the my_log with write permission
    		write (msg & return) to file the my_log starting at eof
    		close access file the my_log
    	on error
    		try
    			close access file the my_log
    		end try
    	end try
    end log
    Pour ton information, il existe aussi des applications de récupération de disques,...et surtout des outils de sauvegarde (mais ça, c'est pour la prochaine fois)

    PS : comme la copie est faite 1 par 1, cela peut prendre du temps à s'exécuter,...selon le contenu de ton disque !

    Cordialement

Discussions similaires

  1. Protéger une disquette contre la copie
    Par benzaza dans le forum Assembleur
    Réponses: 20
    Dernier message: 16/01/2005, 11h42
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 11h33
  3. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 23h20
  4. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 16h23
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo