diff --git a/BmsToOsu/BmsToOsu.csproj b/BmsToOsu/BmsToOsu.csproj
index 3432428..1f627fe 100644
--- a/BmsToOsu/BmsToOsu.csproj
+++ b/BmsToOsu/BmsToOsu.csproj
@@ -11,6 +11,7 @@
+
diff --git a/BmsToOsu/Launcher/CliArgsLauncher.cs b/BmsToOsu/Launcher/CliArgsLauncher.cs
new file mode 100644
index 0000000..f2ef3a8
--- /dev/null
+++ b/BmsToOsu/Launcher/CliArgsLauncher.cs
@@ -0,0 +1,335 @@
+using System.IO.Compression;
+using BmsToOsu.Converter;
+using BmsToOsu.Entity;
+using BmsToOsu.Utils;
+using CommandLine;
+using CommandLine.Text;
+using log4net;
+
+namespace BmsToOsu.Launcher;
+
+public static class CliArgsLauncher
+{
+ private static readonly ILog Log = LogManager.GetLogger(nameof(CliArgsLauncher));
+
+ private static readonly string[] AvailableBmsExt =
+ {
+ ".bms", ".bml", ".bme", ".bmx"
+ };
+
+ public static void Launch(string[] args)
+ {
+ var argsParser = new Parser(with =>
+ {
+ with.AutoVersion = false;
+ with.AutoHelp = true;
+ with.HelpWriter = null;
+ });
+
+ var result = argsParser.ParseArguments