OS X Snow Leopard: élément de l'automate du Finder pour la création d'un nouveau fichier texte

4

Comment puis-je créer un élément automate Finder qui apparaît dans «Services» pour créer un nouveau fichier texte dans un dossier? J'utilise TextMate, donc mieux si la solution est agnostique à l'éditeur (plutôt que d'utiliser TextEdit).

Ricardo Sanchez-Saez
la source
Une opération aussi utile sous Windows, et sous MacOS, elle manque complètement
davidfrancis
Pas un service de réparation, mais un nouveau bouton dans la barre d’outils - voir la réponse de ling ici: apple.stackexchange.com/questions/84309/…
davidfrancis

Réponses:

1

Voici comment je le fais: je crée un fichier texte factice et le stocke dans un dossier de mes documents (il sert de modèle à chaque fois que le service est exécuté). Je crée ensuite un workflow (service) comme suit:

Tout ce que vous avez à faire maintenant est de cliquer avec le bouton droit de la souris sur le dossier dans lequel vous souhaitez placer le nouveau fichier et de sélectionner le service créé en enregistrant ce flux de travail.

Pour ouvrir le fichier nouvellement créé, vous pouvez ajouter une action "Ouvrir les éléments du Finder" dans laquelle vous devez évidemment sélectionner TextMate plutôt que TextEdit. Pour le rendre agnostique à l'éditeur, vous pouvez lui indiquer de s'ouvrir avec son application par défaut, et il le fera.

Si le fait de demander le nom au moment de l'exécution est très important pour vous, vous pouvez ajouter une action get text et l'affecter à une seconde variable, puis ajouter une action de changement de nom après l'action de copie et remplacer le texte par le nom de votre fichier de modèle. avec la variable de texte. Par défaut, vous ne pouvez pas utiliser les variables de texte de la manière que j'ai décrite, mais l'article suivant fournit une solution pour le faire. Je sais que cela fonctionne sous 10.6, et peut ne pas fonctionner avec une version antérieure d’OSX.

voir ici pour les instructions

finiteloop
la source
Cela me semble être la bonne réponse.
Darren Newton
Bonne réponse informative! Il me faudrait une dernière précision: existe-t-il un moyen de créer une action Automator qui affecte le dossier que vous consultez actuellement dans le Finder (plutôt que le dossier que vous avez sélectionné en cliquant dessus avec le bouton droit de la souris)?
Ricardo Sanchez-Saez
Pas que je sache de. C'est le seul inconvénient. J'ai essayé de trouver une alternative, donc je n'ai pas besoin de faire un répertoire. Cependant, j'utilise la vue en colonne, ce n'est donc pas une si grosse affaire pour moi. Je vous ferai savoir si je pense à quelque chose. Tiens moi au courant. J'utilise cette même méthode pour créer de nouvelles classes C ++ dans certains répertoires. Fonctionne comme un charme.
Finiteloop
1
segfault, il semble que le lien d’image de votre réponse ne fonctionne plus. Pourriez-vous regarder ça? À votre santé.
Ricardo Sanchez-Saez
1

Cela devrait fonctionner:

do shell script "echo '[text for the text file]' > [path to folder & file].txt"

Si vous voulez juste un fichier texte vide, essayez ceci:

do shell script " > [path to folder and file].txt"

Edit: J'ai relu votre question ... c'est un AppleScript. J'ai plus d'expérience avec Plain Terminal qu'avec Automator et AppleScript, mais je suppose que vous pouvez appeler un AppleScript d'Automator?

trolle3000
la source
Je préférerais que ces actions ouvrent TextMate (ou TextEdit, ou tout autre éditeur de texte) avec un fichier vide. De plus, j'aimerais savoir comment ajouter ceci dans Automator afin que cela apparaisse dans le menu Finder inclus dans la réponse.
Ricardo Sanchez-Saez
1

D'accord, j'ai triché mais vous bénéficiez toujours d'un service Automator. Vous devez avoir installé TextMate pour utiliser le shell (c'est généralement ce que vous faites lors de la première installation, vous pouvez donc l'utiliser à matepartir de la CLI).

Ouvrez Automator et créez un nouveau service

À partir d’ utilitaires, faites glisser le curseur sur une fenêtre Run Shell Script .

Déposer dans le script suivant:

cd ~/Desktop;
touch newfile.txt;
mate newfile.txt

En gros, cela crée un fichier sur votre bureau nommé newfile.txt , puis l’ouvre dans TextMate.

texte alternatif

Mise à jour demandée:

  1. Ouvrez Automater et créez un nouveau service
  2. Glissez sur une fenêtre 'Run Applescript'
  3. Collez le manuscrit suivant d' Olivier Fabré :

    on run {input, parameters}
    
        tell application "Finder"
            set currentPath to insertion location as text
            set filePath to POSIX path of currentPath & input
        end tell
    
        tell application "TextMate"
            activate
            open filePath
        end tell
    
        return input
    end run
    
  4. Enregistrer le service

    Automator

Qu'est-ce que cela fait:

Si vous sélectionnez du texte dans une application, un fichier TextMate vierge portant le nom du texte sélectionné s'ouvrira dans la fenêtre du Finder située au premier plan.

Ce que vous essayez probablement de faire:

D'autres personnes ont écrit des tutoriels sur la création d'un bouton TextMate situé dans la barre d'outils du Finder, qui ouvrira un document vierge dans cette fenêtre ou ouvrira un fichier sélectionné dans TextMate. Cela ressemble à ce que vous voulez faire et ne nécessite pas Automator.

Darren Newton
la source
C'est utile, mais j'ai plusieurs préoccupations ici. a) Touch n'est pas nécessaire, car mate crée un fichier s'il n'est pas trouvé. b) Comment puis-je paramétrer le nom du nom de fichier? Un autre problème est que je souhaite que cette tâche de l’automate fonctionne automatiquement sur le localisateur de dossiers qu’elle affiche, et non sur le dossier sélectionné.
Ricardo Sanchez-Saez
alors vous voudrez peut-être passer un peu de temps ici snippets.dzone.com/posts/show/1037
Darren Newton
Bon lien, bien qu'un peu compliqué. Fournissez un processus plus simple, étape par étape, pour créer le service dont j'ai besoin (le service demande un nom de fichier texte, le crée dans le dossier du chercheur actuel (et non le dossier sélectionné), et l'ouvre dans TextMate) et vous obtenez le correct répondre à la réputation. ;-)
Ricardo Sanchez-Saez
Votre mise à jour est très explicative, merci. C'est dommage que je ne puisse pas marquer deux réponses comme étant correctes. :-(
Ricardo Sanchez-Saez
Merci pour une belle explication. Cependant, je voulais que le nom du nom de fichier soit demandé plutôt que de devoir sélectionner un texte dans le Finder. C'est dommage que deux réponses différentes puissent être marquées comme étant correctes. Merci pour vos efforts cependant!
Ricardo Sanchez-Saez
0
try
    tell application "Finder"
        set ans to text returned of (display dialog "" default answer "")

        set opn to 0
        set fn to "new.txt"
        if ans is "," then
            set opn to 1
        else if ans is "/" then
            set opn to 2
        else if character -1 of ans is "," then
            set fn to text 1 thru -2 of ans
            set opn to 1
        else if character -1 of ans is "/" then
            set fn to text 1 thru -2 of ans
            set opn to 2
        end if

        if character -1 of fn is "." then
            set fn to fn & "txt"
        end if

        try
            set p to target of window 1
        on error
            set p to desktop as alias
        end try
        set f to make new file at p with properties {name:fn}
        set selection to f
        if opn is 1 then
            open f
        else if opn is 2 then
            open f using (path to application "TextMate")
        end if
    end tell
end try

J'utilise ceci via FastScripts , mais cela devrait également fonctionner comme un service Automator. Et oui, ce script est moche même selon les normes AppleScript.

Lri
la source
0

Une modification de la réponse de finiteloop qui est un peu plus propre.

  1. Créer un nouveau service dans Automator
  2. Changer 'Service reçoit sélectionné "en" dossiers "
  3. Donnez-lui l'action "Définir la valeur de la variable", remplacez "Stockage 1" par une variable appelée "dest"
  4. Ajoutez l'action "Nouveau fichier texte" et faites glisser la variable "dest" du volet Variable en bas de l'écran sur le champ "Où". C'est plus simple que de copier un fichier de modèle.
  5. Enregistrer avec un nom raisonnable.

Maintenant, lorsque vous cliquez sur un dossier, vous pouvez aller au menu Services en bas et trouver votre fonction.

La fonction apparaîtra également dans la page des paramètres de services; Paramètres -> Clavier -> Raccourcis -> Services (côté gauche). Vous pouvez l'activer et le désactiver ici. Vous pouvez également lui attribuer un raccourci clavier. Enfin, si vous désélectionnez suffisamment d'éléments dans le sous-menu Dossier (il n'y en a que quatre ou moins), votre fonction apparaîtra au bas du menu contextuel.

Vincent Bauer
la source