in reply to system calls

I surmise from the top line of your code that you are running your script through Apache and its emulation of the UNIX shebang line for Windows. If so, I'd try the following two things:
  1. Try running this script from the command line instead of through Apache. That is, run perl yourscript.pl and see if that works. If it does, that should be a clue that the problem stems from the Apache environment. You could then Google / Super Search specifically for this problem as it relates to Apache.
  2. I have seen in other nodes recommendations of executing system commands by explicitly invoking cmd.exe. So try something like:
    system("cmd.exe /c check.bat > C:\\$file1 2>&1");
    or even
    # Check this is the correct path to cmd.exe on your system system("C:\\WINDOWS\\system32\\cmd.exe /c check.bat > C:\\$file1 2>&1" +);
I hope this helps. I had no problems executing a simple batch file using your syntax from my Windows XP SP2 command line.