Работа с аргументами командной строки в C#

Работа с аргументами командной строки в C#

Работа с аргументами командной строки в C#

Как известно с любой компьютерной программой можно работать посредством нескольких программных интерфейсов:
с помощью графического интерфейса, веб-интерфейса или интерфейса командной строки.

В этой статье мы рассмотрим, как работать с аргументами командной строки в C#.
Аргументы командной строки — это значения, передаваемые консольным программам, обычно, через терминал.

Мы можем передать аргументы командной строки в метод Main, объявив этот метод с типом параметра string[].

В первом примере мы передаем аргументы командной строки методу Main.



namespace MyRusakov.App

{

    public class Program

    {

        // все параметры, переданные программе попадут в массив args

        public static void Main(string[] args)

        {

            foreach (string arg in args)

            {

                Console.WriteLine(arg);

            }

        }

    }

}



Выполним программу и посмотрим на вывод в консоли:



$ dotnet run This Is Myrusakov Post

This 

Is 

Myrusakov 

Post



C# Метод Environment.GetCommandLineArgs

Метод Environment.GetCommandLineArgs возвращает массив строк, содержащий аргументы командной строки для текущего процесса.
Кроме того, данный метод также возвращает полный путь к запущенной программе:



$ dotnet run This Is Myrusakov Post

C:UsersMyRusakovDocumentsCSharpCmdArgsbinDebugnet6.0CSharpCmdArgs.dll

This 

Is 

Myrusakov 

Post



Свойство C# Environment.CommanLine

Свойство C# Environment.CommanLine возвращает строку, содержащую аргументы командной строки.



using System;

using System.Linq;





namespace MyRusakov.App

{

    public class Program

    {

        public static void Main()

        {

            // строка вместе с путем к программе и переданными ей параметрами

            string args_str = Environment.CommandLine;

            Console.WriteLine(args_str);



            // делим всю строку по символу пробела

            string[] arg_values = args_str.Split(" ");



            try

            {

                var formatted = string.Join(",", arg_values.Skip(1).Select(str => $" -[str]- "));

                Console.WriteLine($"Итоговая строка: {formatted}");

                return 0;

            }

            catch (FormatException e)

            {

                Console.WriteLine("Ошибка: " + e.Message);

                return 1;

            }

        }

    }

}



C# CommandLineParser

При работе с аргументами командной строки часто приходится с их помощью задавать различные настройки работы программы.
Для упрощения этой работы создано множество различных библиотек, одной из таких библиотек является C# библиотека CommandLineParser.

Добавим эту библиотеку в проект:

C:> dotnet add package CommandLineParser



using CommandLine;



namespace MyRusakov.App

{

    /**

        С помощью этого класса определяем набор аргументов командной строки, 

        которые принимает наше приложение

     */

    class CLIOptions

    {

        [Option("paths")]

        public IEnumerable<string>? Paths { get; set; }

    }



    public class Program

    {

        public static void Main(string[] args)

        {

            // разбираем аргументы, переданные программе

            var parser =  Parser.Default.ParseArguments<CLIOptions>(args);



           parser.WithParsed<CLIOptions>(opt =>

            {

                if (opt.Paths != null)

                {

                    foreach(var path in paths)

                    {

                        Console.WriteLine($"Путь {path}");

                    }

                }

                else

                {

                    Console.WriteLine("Передайте программе список аргументов");

                }

            });

        }

    }

}



Как видно из примера выше программа определяет аргумент командной строки —paths, который принимает список путей.
Пример работы программы ниже:



C:> dotnet run --paths C:ProjectsTestEx1passwords1.txt C:ProjectsTestEx1passwords2.txt



Путь C:ProjectsTestEx1passwords1.txt 

Путь C:ProjectsTestEx1passwords2.txt



Таким образом в данной статье мы рассмотрели с Вами работу с аргументами командной строки в C#, а также одну из библиотек,
которая позволяет эту работу автоматизировать.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий