The above approach is certainly quicker that manually iterating the list but one important observation I have made is that is that the code will continue to execute immediately after calling the .web.ProcessBatchData() method, this may or not be important depending on what you are doing. For example at this point I wanted to update the status field for all list items simply to indicate that another background job being handled by a windows service had been initiated that would process on every list item. The job being handled by the windows service would update the status field again once the list item had been processed. The problem here is that it’s quite possible that the code will continue to execute and the status could be changed by my job before the batch command has been processed. As far as I have been able to establish it isn’t possible to monitor the progress of the batch commands as it is just passed to SharePoint to handle.

If anyone knows if there is anyway to monitor the progress of the batch commands that have been handled I would love to know, sadly I don’t think this is possible meaning that this approach is not going to be suitable for all situations.