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?