> I would be very surprised that the process-environment does not affect call-process, so I *must* be missing something obvious. I'll take a closer look as soon as I have a little more time.

OK, now this is freak.

REM ---- test.bat ---
@echo off
echo TEST=%TEST>test.log
echo COMSPEC=%COMSPEC>>test.log
REM -- end of test.bat ---


C:\...\test> emacs -Q --batch --eval "(call-process \"c:/devel/emacs/repo/trunk/test.bat\")"

C:\...\test> type test.log
TEST=AAA
COMSPEC=C:\bin64\JPSoft\TCMD\TCC.EXE

C:\...\test> emacs -Q --batch --eval "(let ((process-environment '(\"TEST=BBB\" \"COMSPEC=C:\\Windows\\system32\\cmd.exe\"))) (call-process \"c:/devel/emacs/repo/trunk/test.bat\"))"

C:\...\test> type test.log
TEST=BBB
COMSPEC=C:\bin64\JPSoft\TCMD\TCC.EXE

Is that expected?