Here’s the basic skeleton of a Python script that calls xsibatch -processing -script on all scene files in a given folder.
Python command line:
The python script takes two arguments: the root folder for the location of the scene files, and the name of the script file to run with xsibatch -script.
python process_scenes.pys --dir ""C:\Program Files\Autodesk\Softimage 2013 SP1\Data\XSI_SAMPLES\Scenes" --script "test.pys"
process_scenes.pys:
The python script takes care of finding all the scene files, and then running xsibatch -processing -script on each .scn file.
import os import fnmatch import subprocess import sys import getopt XSI_BINDIR=r"C:\\Program Files\\Autodesk\\Softimage 2013 SP1\\Application\\bin" opts, extraparams = getopt.getopt(sys.argv[1:], "d:s:", ["dir=","script="]) # # Get root directory to scan for scene files # SCENES_DIR="C:\\Program Files\\Autodesk\\Softimage 2013 SP1\\Data\\XSI_SAMPLES\\Scenes\\OLD" SCRIPT="test1.pys" for o,p in opts: if o in ['-d','--dir']: SCENES_DIR = p elif o in ['-s','--script']: SCRIPT = p # # Generator function for finding files # def find_files(directory, pattern): for root, dirs, files in os.walk(directory): for basename in files: if fnmatch.fnmatch(basename, pattern): filename = os.path.join(root, basename) yield filename # # Open each scene file and run the specified script # for scn in find_files(SCENES_DIR, '*.scn'): sXsiBatch = "%s\\xsibatch" % XSI_BINDIR subprocess.call( [ sXsiBatch, '-processing', '-script', SCRIPT, '-args', '-sSceneName', scn ] )
Softimage script test.pys:
A simple test script to run with xsibatch. Note that because the function is named “main”, I don’t have to specify that on the xsibatch command line. I just have to specify the arguments.
def main( sSceneName ): LogMessage( sSceneName )