Win32::Process::Create( $obj, 'c:\path\to\batch\file\myfile.bat', 'myfile arg1 arg2', 0, NORMAL_PRIORITY_CLASS, 'c:\this\will\be\the\working\directory' ) || die(Win32::FormatMessage( Win32::GetLastError() )); $obj->Wait(2000); $obj->GetExitCode($code); print STDERR "The exit code is $code."; if ($code == 259) { warn "The batch file did not terminate after 2 seconds!"; }