[PS CC-CC2022] Скрипт "переложить / сохранить"

  • Автор темы Автор темы apg_777
  • Дата начала Дата начала

apg_777

Топикстартер
20 лет на форуме
Сообщения
278
Реакции
81
Задача проста. Исходный файл открытого документа (всегда открыт, а не создан новый) переложить в заданный каталог и открытый сохранить с тем же именем на старое место. То есть Save, который перекладывает исходник перед записью.
На AppleScript всё работает, но запустить AppleScript из фотошопа нельзя, ему подавай только JavaScript. Приходится запускать скрипт из индизайна или как приложение из файндера. Хотя более логично из фотошопа.
Вариант с запуском AppleScript'а из JavaScript не проходит.
Как это реализовать на JavaScript?
 
Попробуйте так
JavaScript:
var doc = app.activeDocument
fCopy = "/d/folder/" //путь к папке
File(doc.name).copy(File(fCopy + doc.name.replace(doc.path, '')));
doc.save()
 
Последнее редактирование:
Попробуйте так
JavaScript:
var doc = app.activeDocument
fCopy = "/d/folder/" //путь к папке
File(doc.name).copy(File(fCopy + doc.name.replace(doc.path, '')));
doc.save()
Не проходит. Путь, естественно забит реальный, в Data Browser рисуется как настоящий.
Нужно именно переложить (move, чтобы ликвидировать файл), но copy тоже не делает, работает только save. И то не всегда.
Проблема в сети. Что там творит самба неизвестно, но файл отказывается сохраняться. Иногда. Открыл–обработал–сохранил, потом открыл–подкрутил — всё, хана, не сохраняется.
Единственный вариант — убрать исходник и сохранить файл на старое место.
Раньше подключишься по afp и никаких проблем, а теперь afp вне закона, на сервере только smb. Главное никогда не знаешь когда возникнет проблема. Даже на простом копировании в finder часть файлов может оказаться битыми.
С линуксовым сервером проблем по smb нет, только с Microsoft. Ну не любят они MacOS!
 
Нужно именно переложить
File(doc.name).rename(File(fCopy + doc.name.replace(doc.path, '')));
Проблема в сети.
Могли бы и сразу написать 🙂 Покажите
из фотошопа нельзя
Не факт
 
Фотошоп applescript поддерживает если что. Запускать его можно сам по себе, а не из какой-то еще программы.
 
Фотошоп applescript поддерживает если что. Запускать его можно сам по себе, а не из какой-то еще программы.
Запускать можно. Откуда угодно, но не из самого фотошопа!
проверьте версию smb
Проверяй, не проверяй другой не будет. Это дома я могу творить что хочу, а на работе этим занимаются специально обученные люди.
 
И на него дан чёткий ответ
Вот это?
JavaScript:
var doc = app.activeDocument;
fCopy = doc.path + "/trash/";
File(doc.name).rename(File(fCopy + doc.name.replace(doc.path, '')));
doc.save();
Работает только save(), исходник не перекладывается.
 
По copy / remove обычно нормально работает, как минимум результат всегда можно проверить - copy его возвращает.
 
сохранять в сетевую папку из фотошопа не стоит. нормальный процесс - сохранить в локальный файл, потом его скопировать куда надо
 
сохранять в сетевую папку из фотошопа не стоит
Это почему? Постоянно так работаем, 30 лет уже. С сервера взял, обратно сохранил. Проблемы только в этом году появились после смены софта на серверах.
 
у моих клиентов постоянно проблемы, и форумы adobe ими полнятся. ну если работает, то ок. вообще много у кого нестабильно, фотошоп теряет соединение и пишет что не может сохранить файл по указанному пути. я в скриптах в таких случаях всегда сохраняю в локальный tmp файл, потом его уже переношу на сервер
 
специально обученные люди
Так они и должны разобраться что происходит :) Городить костыль со скриптами можно конечно, но лучше разобраться что мешает нормальной работе. Косяк явно со стороны MacOS ибо SMB детище майкрософт :) Как вариант, если с Lin проблем нет, можно примонтировать рабочие папки WIn на Lin и расшарить.
 
Последнее редактирование:
Сетка корпоративная, переделывать её никто не будет. На линуксе сделали свой сервер для личного использования.
Люди достаточно опытные, а бардак наступил после очередного серверного софта.
Пока пользуюсь костылём — AppleScript записал как приложение, которое запускаю JavaScript'ом из фотошопа.
 
Сетка корпоративная, переделывать её никто не будет. На линуксе сделали свой сервер для личного использования.
Люди достаточно опытные, а бардак наступил после очередного серверного софта.
Пока пользуюсь костылём — AppleScript записал как приложение, которое запускаю JavaScript'ом из фотошопа.
Вам ведь все равно куда его перекладывать, сделайте временную папку локально, а не на сервере, скорее всего тогда скрипт выше сработает.
Хотя не факт, скорее всего дело в SMB3 в котором повысили уровень безопасности :)
 
Последнее редактирование:
сделайте временную папку локально
Проходили, не помогает. Потом копируешь на сервер и некоторые файлы либо не перекрывает, либо оказываются битыми. Один вариант — убрать и записать.
Интересней с файлами в типографию. Их обычно кладём в определённый каталог, скрипт (Win) когда их видит кидает в типографию и перекладывает в отправленные. Так иногда файл не удаляется и скрипт начинает веселиться вовсю — кидает в типографию до посинения! Один вариант борьбы — кто кинул файл, тот отцепляется от сервера, тогда файл отпускается.
Тоже грешу на SMB3.
 
вы в js попробовали делать с remove()?

Код:
var doc = app.activeDocument;
fCopy = doc.path + "/trash/";
var targetFile = File(fCopy + doc.name);
if(targetFile.exists) targetFile.remove();
File(doc.fullName).copy(targetFile);
File(doc.fullName).remove();
doc.save();
 
Делал.
1. doc.save() перестаёт работать. Data Browser ExtendScript Toolkit показывает что к этому моменту doc теряет поле path.
2. Убиваются тэги исходника, дата... В MacOS есть некоторые дополнительные поля при работе с файлами. На работе договорились — "зелёный" файл готов, "красный" требует дополнительного внимания, не крашеный ещё не обрабатывался и т.д. Один взгляд в каталог и ясно что предстоит.
Вариант с запуском приложения от AppleScript вполне устраивает. Ещё добавлю замену <скрипт>.jsx на подстановку в строку запуска <скрипт>.app и не надо будет каждый раз скрипт под конкретную задачу подправлять.