# Dump lots of info about BITS jobs. from win32com.bits import bits import pythoncom states = dict([(val, (name[13:])) for name, val in vars(bits).iteritems() if name.startswith('BG_JOB_STATE_')]) job_types = dict([(val, (name[12:])) for name, val in vars(bits).iteritems() if name.startswith('BG_JOB_TYPE_')]) bcm = pythoncom.CoCreateInstance(bits.CLSID_BackgroundCopyManager, None, pythoncom.CLSCTX_LOCAL_SERVER, bits.IID_IBackgroundCopyManager) try: enum = bcm.EnumJobs(bits.BG_JOB_ENUM_ALL_USERS) except pythoncom.error: print "Failed to get jobs for all users - trying for current user" enum = bcm.EnumJobs(0) for job in enum: print "Job:", job.GetDisplayName() print "Description:", job.GetDescription() print "Id:", job.GetId() print "State:", states.get(job.GetState()) print "Type:", job_types.get(job.GetType()) print "Owner:", job.GetOwner() print "Errors:", job.GetErrorCount() print "Created/Modified/Finished times:", [str(t) for t in job.GetTimes()] bytes_tot, bytes_xf, files_tot, files_xf = job.GetProgress() print "Bytes: %d complete of %d total" % (bytes_xf, bytes_tot) print "Files: %d complete of %d total" % (files_xf, files_tot) for f in job.EnumFiles(): bytes, total, done = f.GetProgress() print " Remote:", f.GetRemoteName() print " Local:", f.GetLocalName() print " Progress: %d of %d bytes - completed=%s)" % (bytes, total, done) print print