afterfxコマンド実行時のカレントフォルダ指定

afterfxコマンド実行時のカレントフォルダ指定

本来自分は3Dツールを扱う以外の制作ではMacを使うが、今現在のブログではその他の処理も、Windowsマシンで検証した内容で記事を書いている。しかし、そのうちアップルシリコンの良いMacに乗り換えるかもしれない。

という事で、以下はWindows特有問題。

パスの区切り文字に注意

afterfx コマンドの -s オプションで スクリプトを記載しファイルを開く場合などで、パスの区切り文字が逆スラッシュ(半角の¥)であると After Effects がおかしなパス展開をして、エラーになってしまう。

現在のフォルダの相対パスで動くようなバッチコマンドを書きたい場合どうするか。以下のような対応をしてうまく行った。

set pwd=%~dp0
set pwd2=%pwd:\=/%
"C:/Program Files/Adobe/Adobe After Effects 2023/Support Files/afterfx" -s "var file = new File('%pwd2%my_project.aep');app.open(file);app.project.renderQueue.render();" -noui

pwd2 に pwd のパス区切り文字を¥から/に置換してそれを用いた。バッチファイルを書くのはいろいろ大変なので powersherllとかpythonで描けばいいんじゃないかとはいつも思うが、お手軽さでコマンドプロンプトで初めてはまる事が多い。

ちなみに以下はパスの区切り文字が¥のままでも正しく動く。

set pwd=%~dp0
"C:/Program Files/Adobe/Adobe After Effects 2023/Support Files/afterfx" -r "%pwd%my_script.jsx" -noui
// my_script.jsx の内容
var file = new File('my_project.aep');
app.open(file);
app.project.renderQueue.render();

これはパスの展開が After Effects の外部で正しく行われるからだろう。aep パス指定にフォルダパスを含めなくてもうまくいくのが、After Effects 起動後はカレントフォルダが jsx ファイルと同じフォルダになるからのようだ。(aep ファイルが jsx と同じ場所になる場合)

jsx ファイルパスを指定しない場合、After Effect 起動後のカレントフォルダは、”C:/Program Files/Adobe/Adobe After Effects 2023/Support Files/” となっていた。いろいろややこしい。

とはいえ絶対パスをコマンドやスクリプトに記述するのはできる限り避けたいので、上の例のような対応を今後もとることになるだろう。

おわり。

この記事を参照している他の記事

Previous post データ駆動型動アニメのバッチレンダリング時はaerender.exeじゃなくafterfx.exeを使おう
Next post AfterEffects:カラー値を外部jsonデータとエフェクト設定両方で指定する