maya可用启动命令行参数:

-v                       打印产品版本和识别编号
-batch                   适用于批处理模式
-prompt                  适用于交互式非 GUI 模式
-proj [dir]              在指定的项目目录中查找文件
-command [mel command]   启动时运行指定的命令
-file [file]             打开指定的文件
-script [file]           启动时源化指定文件
-log [file]              将 stdout 消息和 stderr 消息复制到指定文件
                             (使用完整文件名)
-hideConsole              隐藏控制台窗口
-recover                 恢复上一日志文件
                             (使用“Render -help”获得更多选项)
-optimizeRender [file] [outfile]
                         为渲染目的优化 maya 文件
                             效率,并将结果置于输出文件中
                      (使用“maya -optimizeRender -help”获得更多选项)
-archive [file]          显示归档指定场景所需的文件列表
-noAutoloadPlugins       不要自动加载任何插件。
-3                       启用 Python 3000 兼容性警告s

使用环境MAYA2022。

启动执行MEL

如果用命令行的command来执行参数,可以这么写:

maya.exe -command “print(“”abc””);”

在命令行中,字符串定界用的双引号需要使用双引号转义,即””为字符”,maya启动后将会执行print(“abc”);的mel代码。

通过mel执行python

maya启动命令没有提供python的选项,但是可以通过mel来调用python。

在maya脚本编辑器里可以这么用mel调用python,因为使用字符串的方式调用,所以python内特殊字符需要使用\来转义:

python(“print(\”hello python\”);”);

也可以写多行py语句,通过在字符串中插入\n来换行,这个语句可以在maya中成功执行,现在我们要给它包装到命令行上。

python(“print(\”hello\”)\nprint(\”python\”)”);

通过命令行执行进行编写,需要将字符串参数内的”转义为””,符号\在windows命令行中是普通字符,所以不需要额外转义

maya.exe -command “python(“”print(\””hello\””)\nprint(\””python\””)””);”

你可能以为maya启动时拿到的是这样的参数:

python(“print(\”hello\”)\nprint(\”python\”)”);

但这样写在命令行中执行会报错,这里有一个坑,就是maya在读取参数的时候将字符\”转义为了字符”,而字符\n却没有被转义为换行而是正常显示。

Maya返回的执行结果:

python(“print(“hello”)\nprint(“python”)”);
// 错误: python(“print(“hello”)\nprint(“python”)”); //

很明显,字符\n被正常保留并没有产生换行,但字符\”中的\却被吃掉了,只剩了一个”。

那么我们就需要在命令行中仅仅对字符\”情况进行额外处理,即\转变为\\,\n保持不变

maya.exe -command “python(“”print(\\””hello\\””)\nprint(\\””python\\””)””);”