Well I found out what was going on. Without forum help, as none was given ;-)
I initially tried a python script to call the xvhdl command:
subprocess.call('xvhdl -work work "<file_name>.vhd"')
but that kept throwing errors in subprocess.py. I ended up using Popen, which worked as long as I set shell=True (default is False).
subprocess.Popen('xvhdl -work work "<file_name>.vhd"', shell=True)
This worked, which made me suspicious of why call didn't work.
I finally ended up looking in the c:\Xilinx\Vivado\2013.4\bin directory which it turns out doesn't have any executable binary files, but instead has only unix scripts and batch files. As the original subprocess.call was trying to execute the unix script it would fail. Changing the python script to use the following command:
subprocess.call('xvhdl.bat -work work "<file_name>.vhd"')
corrected the original script.
In regards to the original issue of running the xvhdl command in a batch file you need to use the batch command call to allow the xvhdl.bat batch file to return control the the calling batch file. e.g. call xvhdl.bat -work work "<file_name>.vhdl"
Regards