Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Renommer le contenu de fichiers en Applescript / Automator?

Discussion dans 'Développement Mac' créé par BS0D, 13 Décembre 2008.

  1. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Bonjour à tous,

    Voilà, j'ai un nombre important de fichiers html et php, dans lesquels je voudrais changer du contenu automatiquement car à la main ça prendrait trop de temps.

    Ma question est la suivante: est-il possible de chercher/remplacer le contenu de ces fichiers avec automator ou en applescript ?
    Si oui, avez-vous des indications?

    (ex: remplacer tous les "BS0D" par "Mon Prénom" à l'intérieur même des fichiers)

    Merci de votre aide... :)
     
  2. zacromatafalgar

    zacromatafalgar Membre émérite

    Inscrit:
    19 Mai 2004
    Messages:
    878
    J'aime reçus:
    81
    Salut,

    C'est possible dans un fichier html avec applescript, je ne peux rien te garantir pour les .php mais je pense qu'ils sont également modifiables… ;)
     
  3. pascalformac

    pascalformac Légende
    Club MacG

    Inscrit:
    23 Novembre 2003
    Messages:
    58 699
    J'aime reçus:
    1 815
    un réglage avancé du freeware quicksilver peut faire ca

    (fonction de depistage remplacement de contenu de fichier)
     
  4. zacromatafalgar

    zacromatafalgar Membre émérite

    Inscrit:
    19 Mai 2004
    Messages:
    878
    J'aime reçus:
    81
    Si tu veux tester le code suivant, il fonctionne chez moi avec des fichiers html…

    Il te suffit de remplacer les properties en début de script ;)
    Code (Text):
    property textToFind : "test"
    property textToWrite : "footer"

    on open theDrop
        set nbrItems to count of theDrop
        repeat with thisFile from 1 to nbrItems
            set theFile to (item thisFile of theDrop)
            set fileID to open for access file (theFile as string)
            set dataFromFile to read fileID as string
            close access fileID
           
           
            set dataToWrite to findReplace(dataFromFile, textToFind, textToWrite)
           
           
            set x to open for access file (theFile as string) with write permission
            write dataToWrite to x
            close access x
        end repeat
    end open


    on findReplace(theData, toFind, replaceBy)
        set text item delimiters to toFind
        set theWords to {} & text items of theData
        set theResult to 1st item of theWords
        repeat with i from 2 to (length of theWords)
            set theResult to theResult & replaceBy & (item i of theWords)
        end repeat
        return theResult
    end findReplace
     
     
    BS0D aime ça.
  5. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    OK merci, je vais voir pour quicksilver (je connaissais pas) et si j'ai un souci je reviens par ici :)
     
  6. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Genial, je vais tester. par contre, ce sont des fichiers php que je dois retoucher... ça va marcher?

    pas le temps de tester tout de suite, mais je te tiens au courant ;)
     
  7. zacromatafalgar

    zacromatafalgar Membre émérite

    Inscrit:
    19 Mai 2004
    Messages:
    878
    J'aime reçus:
    81
    Je ne sais pas, je n'en ai pas pour tester.
    Tu peux essayer sur une copie de fichier…
     
  8. pascalformac

    pascalformac Légende
    Club MacG

    Inscrit:
    23 Novembre 2003
    Messages:
    58 699
    J'aime reçus:
    1 815
    ben non
    tu vas dans le long fil dédié à ce freeware
    ( en passant tutos pdf dans les dernieres pages)

    extrait
     
  9. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Je viens d'arriver au taffe, donc je retrouve un bon vieux windaube qui a déjà planté une fois au bout d'un quart d'heure :p mwah :)
    Je testerai donc plus tard

    Merci, il me semble que je vais devoir l'appréhender un peu... du coup d'oeil que j'ai jeté, c'est pas si facile qu'automator.
    On verra ce soir ;)

    Merci les gars :up:
     
  10. pascalformac

    pascalformac Légende
    Club MacG

    Inscrit:
    23 Novembre 2003
    Messages:
    58 699
    J'aime reçus:
    1 815
    le quicksilver est un outil très souple c'est ce qui en fait sa qualité et...son défaut
    qualité: sert à plein de choses ( recherche , lancement d'appli , manips de fichiers , manips dans fichier) et le tout memorisé
    defaut : manuel du developpeur minimaliste
    mais plein de gens ont pondu des manuels ou screencasts
    (ou decouvert des utilisations avancées, certaines imprévues par le developpeur ! c'est lui qui le dit , ravi)
     
  11. grumff

    grumff Membre d’élite
    Club MacG

    Inscrit:
    9 Novembre 2000
    Messages:
    3 606
    J'aime reçus:
    99
    Mouaip y'en a des tas des softs capables de faire ça, moi je passe par bbedit ou eclipse en général, sinon en 3 lignes de shell à coup de sed/ls/xargs
     
  12. pascalformac

    pascalformac Légende
    Club MacG

    Inscrit:
    23 Novembre 2003
    Messages:
    58 699
    J'aime reçus:
    1 815
    exact même textedit( dans certains cas c'est pas pratique du tout) ou textwrangler etc etc
     
  13. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Je me doute, mais moi je voudrais automatiser la tâche pour m'embeter le moins possible: à savoir que j'ai des dossiers et sous-dossiers, et 1000 fichiers ou un truc dans le genre.
    L'intérêt c'est donc pas d'ouvrir chaque fichier individuellement pour me taper 100 clic de find&replace par fichier !
     
  14. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    re-
    dis, y'a t-il moyen de coupler ce script avec une action automator style "ouvrir les éléments du finder indiqués"?
    parce que ça marche, mais je suis obligé de dropper chaque fichier l'un après l'autre... c'est comme qui dirait pénible !


    et avec QS, je trouve pas du tout comment faire...
     
  15. zacromatafalgar

    zacromatafalgar Membre émérite

    Inscrit:
    19 Mai 2004
    Messages:
    878
    J'aime reçus:
    81
    J'ai pourtant essayé avec plusieurs fichiers (4) et ça fonctionnait parfaitement, je viens de renouveler le test et ça marche chez moi…

    Pour Automator, probablement mais je ne l'utilise pas.
     
  16. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Alors peut etre que je m'y prends mal : j'ai essayé en l'enregistrant en tant qu'application option application executable uniquement et un peu toutes les autres options.
    mais quand je rouvre mes fichiers, le texte à remplacer n'a disparu que dans un des fichiers droppés dessus (c'est bien un dropplet hein?!)

    je sais pas si ça vient de ça, mais comme je les avais mis sur le net et que je les ai retéléchargés, mac os me demande confirmation avant de les ouvrir en me disant :

    Voir la pièce jointe 19479

    peut etre que ça empeche le dropplet d'ouvrir le fichier ?


    EDIT :
    je viens de trouver ce script sur le net (iScript.fr):

    Code (Text):

    on open (liste_des_fichiers)
    repeat with le_fichier_a_nettoyer in liste_des_fichiers
    tell application "BBEdit"
    activate
    open le_fichier_a_nettoyer
    replace "\t" using "" searching in text 1 of text window 1 options {search mode:literal, starting at top:true, wrap around:false, reverse:false, case sensitive:false, match words:false, extend selection:false}
    replace return using "" searching in text 1 of text window 1 options {search mode:literal, starting at top:true, wrap around:false, reverse:false, case sensitive:false, match words:false, extend selection:false}
    replace " " using "" searching in text 1 of text window 1 options {search mode:literal, starting at top:true, wrap around:false, reverse:false, case sensitive:false, match words:false, extend selection:false}
    save text window 1
    close text window 1
    end tell
    end repeat
    end open
     
    mais il marche pas du tout chez moi ... il me dit que la syntaxe n'est pas bonne :/
     
  17. tatouille

    tatouille Vétéran

    Inscrit:
    1 Juin 2004
    Messages:
    5 174
    J'aime reçus:
    494
    un simple grep -R sed -> newfile ferait l'affaire en une ligne de bash c'est regle ton histoire ;)
     
  18. BS0D

    BS0D Membre d’élite
    Club MacG

    Inscrit:
    27 Juillet 2008
    Messages:
    2 320
    J'aime reçus:
    530
    Pas tout compris là... peux tu détailler un peu ?

    Je suis en train de galérer pour trouver des actions automator ou pour faire ça en applescript mais j'arrive à rien ... ça commence à me gaver ...
     
  19. pascalformac

    pascalformac Légende
    Club MacG

    Inscrit:
    23 Novembre 2003
    Messages:
    58 699
    J'aime reçus:
    1 815
    ce gavage , quel timing et quelle abnegation, quel sens du sacrifice !
    c'est toi le futur repas de fete dans ta famille?

    détail , si c'est le cas , tu fais don de ton mac?Si oui tu previens et je m'arrange pour une couronne dédicacée à l'enterrement
    "Au regretté blue screen of digestion" ca t'irait?

    :D
     
    BS0D aime ça.
  20. zacromatafalgar

    zacromatafalgar Membre émérite

    Inscrit:
    19 Mai 2004
    Messages:
    878
    J'aime reçus:
    81
    Enregistre au format Progiciel (universal) en ne cochant aucune case et particulièrement "Exécutable uniquement" car cette dernière t'empêche, si elle est cochée, d'accéder au code et donc de le visualiser/modifier en déposant le droplet sur l'icône de l'Éditeur de script…
     
Chargement...