Les services Automator intégrés dans un menu contextuel sont un excellent moyen de réduire rapidement les fichiers JPEG dans le viseur. Faites un clic droit sur le fichier, choisissez votre script de mise à l'échelle, en quelques secondes. Le problème est que cela efface les horodatages des fichiers en les écrasant avec la date de l'opération de mise à l'échelle.
Existe-t-il un moyen d'utiliser Automator pour conserver les horodatages lors de la mise à l'échelle?
Sinon, dans Automator, existe-t-il un meilleur moyen de le faire?
jpeg
champ Date. J'ai également un script Automator pour le faire qui consiste en unbash
script simplejhead -ft "$*"
. Si vous voulez cette recherchejhead
.-m
et-d
en même temps. (Vous auriez dû le faire en premier lieu). Vous voudrez peut-être donc mettre à jour le service Automator que vous avez téléchargé. De plus, si vous laissiez des espaces et une indentation dans le code, je vous en serais reconnaissant, car cela simplifie la lecture et la compréhension. L'espace blanc ne ralentit pas l'exécution.Réponses:
Voici un moyen d’atteindre l’objectif déclaré avec un service Automator . Au lieu d'utiliser Scale Images, utilisez Run Shell Script avec les paramètres, Shell: / bin / bash et Pass input: As arguments et ajoutez-y le code suivant :
Notez que la dernière ligne du code ci-dessus peut être omise si vous allez utiliser Show Growl Notification , que je n'ai pas et pourquoi j'ai utilisé un son système. Cela a été fait sous OS X 10.8.5 et vous devrez vérifier que le chemin d'accès aux exécutables est le même sur votre système, même s'il devrait l'être. La raison pour laquelle j'utilise le chemin d'accès complet de chaque exécutable est due aux erreurs d'Automator si je ne les ai pas. Vous pouvez obtenir le FQP dans un terminal en utilisant
which
, par exemple, deswhich sips
déclarations/usr/bin/sips
.Notez que
GetFileInfo
etSetFile
font partie des outils Xcode et si non vous avez déjà installé vous devez installer, qui peut être déclenché en tapantGetFileInfo
dans un terminal et par la suite avec les invites.Vous pouvez lire les pages de manuel de chacune des commandes utilisées pour mieux comprendre ce qui se passe.
Les pages de manuel pour: GetFileInfo , gorgées et SetFile
la source
sips
avant d'avoir vu ma réponse et que vous ne pouviez pas la faire fonctionner? Je demande parce que le script tel qu’ilsips
est écrit correspond à la moitié de la largeur en pixels du fichier original, ce$w
qui a toujours fonctionné dans mes tests.Le système de fichiers sous Mac OS X conserve 3 horodatages distincts pour les fichiers, comme suit:
ctime
- heure de changement (heure de dernier changement du propriétaire du fichier, autorisationsatime
- heure d'accès (date du dernier accès au fichier ou au contenu)mtime
- Heure de modification (date à laquelle le contenu réel a été modifié pour la dernière fois)Bien que ceux-ci soient définis automatiquement au cours des différentes étapes de la vie d'un fichier au cours d'une interaction normale, il est important de comprendre qu'ils sont également modifiables en une valeur (valide) de votre choix. Vous pouvez écraser la dernière heure modifiée sur une date précédente, si vous en avez vraiment besoin, etc. avec une simple commande de terminal:
Donc, tout ce que vous avez à faire est de lire l’heure que vous souhaitez enregistrer, d’apporter vos modifications, puis de revenir à l’heure originale. Tout cela peut être fait dans Automator.
Je ne vous laisserai pas le temps, mais voici un moyen rapide et sale (avec beaucoup de commentaires et de vérifications pour vous assurer de bien comprendre, et ce n’est pas simplement une charge de terminal commandes) pour lire un horodatage, le stocker dans un fichier pour plus tard, puis réappliquer le même horodatage en utilisant la ligne de commande.
Vous devriez pouvoir les enregistrer en tant que scripts courts modifiés pour accepter le nom de fichier fourni par Automator), puis appeler ces scripts en tant qu'actions individuelles de Automator.
La chose la plus délicate est de capturer toute la chaîne de date en une fois, car vous pouvez voir les changements de format et vous perdez du temps pour afficher l’année pour les anciens fichiers (et comme nous venons de passer à 2016, presque tous vos fichiers montrera simplement 2015 au lieu de l'horodatage si vous utilisez
ls
...... Vous pouvez donc utiliser d'autres commandes, comme à la
getfileinfo
place:Donc, sans plus tarder, voici un horrible bidouillage que quelqu'un peut améliorer:
Etape 1 , lisez l’horodatage et stockez-le dans une variable, ainsi que dans un fichier afin que nous puissions le récupérer plus tard.
Configurez le fichier et donnez-lui une heure de modification plus ancienne comme s'il s'agissait d'un ancien fichier et répertoriez l'heure de modification pour prouver:
Maintenant, nous lisons l’horodatage et passons-le par une commande appelée
awk
plusieurs fois pour effacer l’espace de l’horodatage et le remplacer par un signe deux-points, puis en utilisant/
et:
comme délimiteurs, imprimez la date dans le format requis par Touchez la commande plus tard ( c'est un peu méchant, mais essentiellement le premier passage sans un délimiteur fourni utilise un espace par défaut, que je remplace par deux points, de sorte que le prochain passage qui délimite spécifiquement:
fonctionne correctement - je ne pouvais pas l'obtenir d'utiliser un espace et:
et/
en un seul passage ... - mais la lisibilité était plus importante que l' efficacité ). Écho de la variable pour prouver que vous l'avez créée correctement, puis videz-la dans un fichier afin de l'avoir plus tard, lisez le fichier pour le prouver:Étape 2 Maintenant, modifiez le fichier.
Ici, je viens d’ajouter du texte, mais votre Automator ferait ce travail ici, puis imprimerait les temps modifiés modifiés pour prouver que le changement avait eu lieu:
Étape 3 Remettez l'ancien horodatage
Maintenant, réinitialisez l'horodatage modifié, en utilisant le fichier tactile comme indiqué en haut de cette réponse, mais en automatisant le bit où nous incluons la date pour inclure le contenu du fichier que nous connaissons maintenant, inclut l'horodatage dont nous avons besoin dans le format correct:
Quelques vérifications supplémentaires pour prouver que l'horodatage d'origine est en place:
la source
Il est possible de le faire sans avoir à télécharger Xcode.
Avec la
sips
commande dans l'action " Run Shell Script " pour remplacer l'action " Scale Images ".Le script utilise la
stat
commande pour obtenir les dates de création et de modification du fichier et latouch
commande pour modifier les dates du fichier.Le script bash:
Vous pouvez changer la qualité (le nombre
after -s formatOptions
) 0-100 , la valeur par défaut est 80 .100 = la meilleure qualité et un fichier plus volumineux, 0 = une qualité médiocre et un fichier plus volumineux .
la source
syntax error near unexpected token ('
ettDates =($(stat -f "%SB %Sm" -t "%Y%m%d%H%M.%S" "$f"))'
donc vous devez supprimer l'espacetDates =
. De plus, vous n'avez pas besoin de télécharger Xcode. Les outils Xcode et Xcode sont deux choses différentes et de taille assez différente. Xcode est supérieur à 4 Go et Xcode Tools à moins de 200 Mo. C'est bien d'avoir une solution native aussi.