Проблема с синтаксисом.
Команда system - это, по сути, пересылка команды в операционную систему. Т.е., в винде - то же самое, что вы ввели бы в её командной строке или окошке "выполнить".
Поскольку командная строка винды использует пробелы для разделения команд/аргументов - то все пути, которые могут содержать пробелы или другие спецсимволы, надо заключать в кавычки.
Т.е., если бы вы выполняли эту команду там - она выглядела бы так:
Код:
"C:/Program Files/Adobe/Adobe Photoshop CS3/Photoshop.exe" "C:/Users/a_ivanow/Desktop/outUV.psd"
Обратите внимание, здесь - 2 пары кавычек. В первой - один путь, во второй - другой, между ними - пробел.
Теперь вернёмся к Майской команде system. Работает она следующим образом: мы ей скармливаем строковое значение, а она перенаправляет его как команду в командную строчку винды.
Соответственно, чтобы скормить то, что мы тут наворотили, это тоже надо заключить в кавычки. (потому что для Майи это и не команда вовсе, а последовательность символов).
Т.е., привести майский код к такому виду:
Поскольку и тут, и там кавычки, то Майе надо знать, какие из них задают начало и конец строкового значения, а какие - собственно символы внутри строки.
Для этого кавычки внутри строки надо
экранировать, т.е. подставить перед каждой кавычкой одинарный символ обратного слэша:
\
Т.е., в итоге наша команда будет выглядеть так:
Код:
system "\"C:/Program Files/Adobe/Adobe Photoshop CS3/Photoshop.exe\" \"C:/Users/a_ivanow/Desktop/outUV.psd\"";
Сам символ обратного слеша является т.н. escape character, т.е. символом экранирования. Т.е., передача всяких спецсимволов в строку (вроде кавычки или разрыва строки) делается через него. Чтобы записать в строку его самого, надо писать не одинарный, а двойной слэш:
\\. Т.е., он как бы экранирует сам себя, и Майя понимает, что мы хотели передать ей бэкслэш.
Именно поэтому не рекомендуется использовать в майе стандартные пути винды: в них используются не прямые, а обратные слэши. Чтоб записать такой путь в строку, надо каждый одиночный слэш заменить двойным, после чего код станет совершенно не удобочитаемым. Так что вы правильно сделали, что сперва привели все пути к unix-виду.