diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-infra-cmdrun
 
+## 0.0.2.0 -- 2025-06-29
+
+* Support Windows.
+
 ## 0.0.1.0 -- 2025-06-22
 
 * First version.
diff --git a/pms-infra-cmdrun.cabal b/pms-infra-cmdrun.cabal
--- a/pms-infra-cmdrun.cabal
+++ b/pms-infra-cmdrun.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.0.1.0
+version:            0.0.2.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-infra-cmdrun
diff --git a/src/PMS/Infra/CmdRun/DS/Core.hs b/src/PMS/Infra/CmdRun/DS/Core.hs
--- a/src/PMS/Infra/CmdRun/DS/Core.hs
+++ b/src/PMS/Infra/CmdRun/DS/Core.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE OverloadedStrings #-}
-
+{-# LANGUAGE CPP #-}
 module PMS.Infra.CmdRun.DS.Core where
 
 import System.IO
@@ -147,8 +147,13 @@
   
   name <- validateCommand nameTmp
   argsStr <- validateCommandArg $ args^.argumentsStringToolParams
+#ifdef mingw32_HOST_OS
+  let scriptExt = ".bat"
+#else
+  let scriptExt = ".sh"
+#endif
 
-  let cmd = toolsDir </> name ++ ".sh" ++ " " ++ argsStr
+  let cmd = toolsDir </> name ++ scriptExt ++ " " ++ argsStr
 
   $logDebugS DM._LOGTAG $ T.pack $ "cmdRunTask: system cmd. " ++ cmd
   return $ cmdRunTask resQ dat cmd
