[AI CC-CC2022] MacOS 15 - cоздать и запустить командный файл из скрипта [AI CC-2025+)

dumbm1

Топикстартер
12 лет на форуме
Сообщения
428
Реакции
197
Всем привет! Всех выживших с Наступившим Новым Годом! 🥳🥂🍾🎁🎉

Помогите, пожалуйста, разобраться.

Проблема со скриптом на MacOS 15.1 (в Windows решение нашел):

как из Иллюстратора создать командный файл и запустить его - чтоб он в консоли выполнился?

Кодом, который расположен ниже я создаю командный файл но запустить его не могу, потому что:
"Не удается запустить файл "test.command", поскольку у Вас нет соответствующих прав доступа"

Руками из консоли я могу поменять права, тогда командный файл запускается.
Но надо именно из Иллюстраторовского скрипта.
Если пользователь должен что-то предварительно настроить, чтобы такие скрипты всегда впоследствии выполнялись, то это тоже хорошее решение.

JavaScript:
//@target illustrator

var filePath = Folder.myDocuments.path + '/test.command';
var fileContents = 'ping mail.ru -c 5'; // тут может быть что угодно, например изменение или создание файлов

execFile(filePath, fileContents);

/**
 * write & execute file
 *
 * @param {String} filePath - File.fullPath
 * @param {String} fileContents - Contents of the executable file
 * @return {Object} f - file object
 */
function execFile(filePath, fileContents) {
if (new File(filePath).exists) new File(filePath).remove();

var f = new File(filePath);

f.open('e');
f.write(fileContents);
f.close();
f.execute();

return f;
}

Спасибо!
 
А вот так не сработает?
app.system(fileContents);
 
  • Спасибо
Реакции: dumbm1
1. Создать скрипт, который дает файлу права на исполнение
2. Запускать его из javascriptа между созданием нового скрипта и его запуском
 
  • Спасибо
Реакции: dumbm1

Не по теме:

Зачем что-то писать в файл, если можно не писать? ;)

 
Меня твоя ссылка привела к другому ответу. 'hz'
 
  • Смешно
Реакции: dumbm1
А, кстати, что мешает писать в готовый файл с нужными атрибутами?
 
  • Огонь
Реакции: dumbm1
1. Создать скрипт, который дает файлу права на исполнение
2. Запускать его из javascriptа между созданием нового скрипта и его запуском
Пока будут использовать, как приемлемый вариант:
  • сделал скриптом command-файл,
  • из консоли поставил доступы,
  • потом только меняю содержимое.
Командный файл запускается, все ок. Спасибо за мысль!

А, кстати, что мешает писать в готовый файл с нужными атрибутами?
Мешает неумение или невозможность писать из Illustrator ExtendScript в файл сразу с нужными атрибутами 😆

Михаил, подскажи, пожалуйста - как дополнить или переписать тот код, который выше, чтобы command-файл был сразу с разрешением, например, на запуск для всех (в консоли это можно сделать командой chmod a+rwx <filename.commnad>). Если это вообще возможно.
 
А потом всем пользователям обяснять, как и где его создавать? ;)
похоже так и придется делать, так сказать, предварительная настройка, что делать 😫

В Windows bat-файл хотябы запускается, просто не все можно из него сделать (но тут решение найдено, как я выше писал)
 
Последнее редактирование:
Михаил, подскажи, пожалуйста - как дополнить или переписать тот код, который выше, чтобы command-файл был сразу с разрешением, например, на запуск для всех (в консоли это можно сделать командой chmod a+rwx <filename.commnad>). Если это вообще возможно.
Я не это имел в виду. Я имел в виду вот это


  • сделал скриптом command-файл,
  • из консоли поставил доступы,
  • потом только меняю содержимое.
 
  • Спасибо
Реакции: dumbm1
Понял, спасибо!
Нашел тему, про запуск терминала из Иллюстраторовского скрипта, но так и не понял, что там имелось в виду и как это работает, если вообще работает 😆
 

Не по теме:

Забавный глюк (или сомнительный сюрприз):
  • На MacOS при перезаписи fiel.open('w'); fiel.write(_contents); fiel.close(); содержимое файла - в данном случае строка текста - полностью уничтожается и на его место помещается новое.
  • На Windows старая строка не уничтожается полностью. Если старая была длиннее, то хвост ее торчит 'P:E'.