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).
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).
Réponses:
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
Ce n'est pas une action de l'automate, mais a résolu le problème de la création d'un nouveau fichier où je voulais: http://ignorethecode.net/blog/2009/05/31/creating-new-documents/ . Regardez la solution intitulée "Une solution encore meilleure" (bas de la page).
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?
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 à mate
partir 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.
Mise à jour demandée:
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
Enregistrer le service
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.
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.
Une modification de la réponse de finiteloop qui est un peu plus propre.
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.