diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake
index 0eb86a8..1f1fa9a 100644
--- a/Modules/FindMPI.cmake
+++ b/Modules/FindMPI.cmake
@@ -291,7 +291,7 @@ function (interrogate_mpi_compiler lang try_libs)
       # If interrogation came back with something, extract our variable from the MPI command line
       if (MPI_COMPILE_CMDLINE OR MPI_LINK_CMDLINE)
         # Extract compile flags from the compile command line.
-        string(REGEX MATCHALL "(^| )-[Df]([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_FLAGS "${MPI_COMPILE_CMDLINE}")
+        string(REGEX MATCHALL "(^| )[-/][Df]([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_FLAGS "${MPI_COMPILE_CMDLINE}")
         set(MPI_COMPILE_FLAGS_WORK)
 
         foreach(FLAG ${MPI_ALL_COMPILE_FLAGS})
@@ -303,10 +303,12 @@ function (interrogate_mpi_compiler lang try_libs)
         endforeach()
 
         # Extract include paths from compile command line
-        string(REGEX MATCHALL "(^| )-I([^\" ]+|\"[^\"]+\")" MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}")
+        string(REGEX MATCHALL "(^| )[-/]I([^\" ]+|\"[^\"]+\")" MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}")
         foreach(IPATH ${MPI_ALL_INCLUDE_PATHS})
-          string(REGEX REPLACE "^ ?-I" "" IPATH ${IPATH})
+          string(REGEX REPLACE "^ ?[-/]I" "" IPATH ${IPATH})
           string(REGEX REPLACE "//" "/" IPATH ${IPATH})
+          string(REGEX REPLACE "^\"(.*)\"$" "\\1" IPATH ${IPATH})
+          file(TO_CMAKE_PATH ${IPATH} IPATH)
           list(APPEND MPI_INCLUDE_PATH_WORK ${IPATH})
         endforeach()
 
@@ -326,11 +328,13 @@ function (interrogate_mpi_compiler lang try_libs)
         endif()
 
         # Extract linker paths from the link command line
-        string(REGEX MATCHALL "(^| |-Wl,)-L([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}")
+        string(REGEX MATCHALL "(^| |-Wl,)(-L|/LIBPATH:)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}")
         set(MPI_LINK_PATH)
         foreach(LPATH ${MPI_ALL_LINK_PATHS})
-          string(REGEX REPLACE "^(| |-Wl,)-L" "" LPATH ${LPATH})
+          string(REGEX REPLACE "^(| |-Wl,)(-L|/LIBPATH:)" "" LPATH ${LPATH})
           string(REGEX REPLACE "//" "/" LPATH ${LPATH})
+          string(REGEX REPLACE "^\"(.*)\"$" "\\1" LPATH ${LPATH})
+          file(TO_CMAKE_PATH ${LPATH} LPATH)
           list(APPEND MPI_LINK_PATH ${LPATH})
         endforeach()
 
@@ -354,19 +358,21 @@ function (interrogate_mpi_compiler lang try_libs)
         # Extract the set of libraries to link against from the link command
         # line
         string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
+        if (WIN32 AND NOT MPI_LIBNAMES)
+          string(REGEX MATCHALL "([^\" ]+|\"[^\"]+\")\\.lib" MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
+        endif()
         # add the compiler implicit directories because some compilers
         # such as the intel compiler have libraries that show up
         # in the showme list that can only be found in the implicit
         # link directories of the compiler. Do this for C++ and C
         # compilers if the implicit link directories are defined.
         if (DEFINED CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES)
-          set(MPI_LINK_PATH
-            "${MPI_LINK_PATH};${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES}")
+          list(APPEND MPI_LINK_PATH ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
         endif ()
 
         if (DEFINED CMAKE_C_IMPLICIT_LINK_DIRECTORIES)
-          set(MPI_LINK_PATH
-            "${MPI_LINK_PATH};${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+          list(APPEND MPI_LINK_PATH
+            ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
         endif ()
 
         # Determine full path names for all of the libraries that one needs
@@ -379,8 +385,14 @@ function (interrogate_mpi_compiler lang try_libs)
 
           if (MPI_LIB)
             list(APPEND MPI_LIBRARIES_WORK ${MPI_LIB})
-          elseif (NOT MPI_FIND_QUIETLY)
-            message(WARNING "Unable to find MPI library ${LIB}")
+          else (MPI_LIB)
+            if (WIN32)
+              list(APPEND MPI_LIBRARIES_WORK ${LIB})
+            else(WIN32)
+              if (NOT MPI_FIND_QUIETLY)
+                message(WARNING "Unable to find MPI library ${LIB}")
+              endif()
+            endif(WIN32)
           endif()
         endforeach()
 
