diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java
index e613967e48033ec403c48005cfac1ebe8cbd4a6e..500925764c8ee72dd3b9d63259d9afb212ac2ff0 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/DataCompletedFilter.java
@@ -99,11 +99,18 @@ public class DataCompletedFilter implements IStoreItemFilter
     {
         final StoreItemLocation storeItemLocation = fileStore.getStoreItemLocation(item);
         final List<String> command = new ArrayList<String>();
+        final String path = FileUtilities.getCanonicalPath(getDataCompletedScript());
         if (OSUtilities.isWindows())
         {
-            command.add("sh");
+            if (path.endsWith(".bat"))
+            {
+                command.add("cmd");
+            } else // Assume we have Cygwin's shell.
+            {
+                command.add("sh");
+            }
         }
-        command.add(FileUtilities.getCanonicalPath(getDataCompletedScript()));
+        command.add(path);
         command.add(storeItemLocation.getAbsolutePath());
         final String host = storeItemLocation.getHost();
         if (host != null)