Command Line Argument의 사용
C# 프로그램 (EXE 실행 파일)을 콘솔 윈도우 (cmd.exe) 에서 실행할 때, 실행파일 뒤에 프로그램에서
사용할 옵션들 (Command-Line Argument 라 부름)을 사용할 수 있다.
이렇게 지정된 옵션들은 C# 프로그램의 Main(string[] args) 메서드의 입력 파라미터인 args 에 전달된다.
만약 Command Line Argument가 지정되지 않으면, args 는 비어 있게 된다.
만약 Command Line Argument가 하나 지정되면, args 문자열 배열에는 하나의 문자열이 전달되고 첫번째 배열요소 즉 args[0]에 해당
아규먼트가 전달된다.
만약 Command Line Argument가 2개 지정되면, args 문자열 배열에는 2개의 문자열이 전달되고
순서대로 각각 args[0], args[1] 에 아규먼트가 전달된다.
Command Line Argument들은 공백(Space)로 구분하는 데, 만약 아규먼트 내에 공백이 있으면 (예를 들어 파일경로에 공백이 있는 경우),
그 아규먼트를 이중인용부호(double quote)로 묶어 준다.
아래 예제는 2개의 아규먼트가 전달되었을 때, 각 args 배열 요소들에 어떤 값들이 전달되지 보여 주는 예이다.
예제
static void Main(string[] args)
{
int argsCount = args.Length;
if (argsCount < 2)
{
Console.WriteLine("Usage: MyApp.exe {inputFilename} {outputFilename}");
Console.WriteLine(" ex) MyApp.exe data.inp data.out");
return;
}
string inputFile = args[0];
string outputFile = args[1];
Console.WriteLine("Input File: {0}", inputFile);
Console.WriteLine("Output File: {0}", outputFile);
}
Visual Studio에서 Command Line Argument 지정하기
콘솔에서와 같이 Visual Studio에서도 Command Line Argument를 지정할 수 있다.
Visual Studio의 [Solution Explorer]에서 프로젝트 노드로부터 오른쪽 버튼을 눌러 [속성창 (Properties)] 메뉴를 선택하여
프로젝트 속성창을 띄운 후, Debug 탭을 선택 중앙의 [Command line arguments] 텍스트박스에 커맨드 라인 아규먼트를 지정한다.
아래 그림은 data.in 과 data.out 이라는 2개의 아규먼트를 지정한 예이다.
C# 동영상 강의 : C# 콘솔 Command Line Argument 사용법
[레벨] 초급
C# 콘솔 프로그램(Console Program)에서 Command Line Argument 를 사용하는 방법을 설명합니다. C# 에서 프로그램 실행시 커맨드 라인으로 입력된 아규먼트를 어떻게 처리하는지와 Visual Studio 에서 디버깅시 커맨드 라인 아큐먼드를 어떻게 입력하는지를 함께 설명합니다.
|
Environment.GetCommandLineArgs() 사용
Main() 메서드 밖에서 Command Line Argument들을 엑세스하기 위해서는 Environment.GetCommandLineArgs() 메서드를 사용할 수 있다.
Environment.GetCommandLineArgs()은 프로그램 실행파일 경로를 포함하여 모든 Argument들을 문자열 배열로 리턴한다.
즉, Main(string[] args) 메서드의 args 파라미터가 콘솔 옵션들만을 포함하는 것과 달리,
Environment.GetCommandLineArgs() 메서드는 첫번째 배열요소에 프로그램 실행파일 경로도 포함한다.
아래 예제에서 보이듯이, 만약 콘솔에서 "MyApp.exe a b c" 를 실행하면, Main 메서드의 args 파라미터는 "a", "b", "c" 등 3개의 문자열을 갖는 반면,
Environment.GetCommandLineArgs()는 "MyApp.exe", "a", "b", "c" 등 4개의 문자열을 리턴한다.
또한, 한가지 주의할 점은 만약 콘솔이 아니라 Visual Studio에서 Command Line Argument를 지정하고 Environment.GetCommandLineArgs()를 사용하였다면,
첫번째 배열요소인 실행 프로그램명이 실행모드("Start Debugging" vs "Start without debugging") 에 따라 틀려진다는 점이다.
디버깅 모드가 아닌 경우 (Start without debugging) 실행파일명은 MyApp.exe 처럼 되지만,
디버깅 모드(Start Debugging)에서는 MyApp.exe 가 아니라 MyApp.vshost.exe 가 된다. 이는 디버깅 모드에서 VS가 대신 MyApp.vshost.exe 을 실행하기 때문이다.
예제
using System;
namespace MyApp
{
class Program
{
/// <summary>
/// "C> MyApp.exe a b c" 가 실행되었을 때
/// </summary>
static void Main(string[] args)
{
// args = { "a", "b", "c" }
foreach (var item in args)
{
Console.WriteLine(item);
}
Run();
}
static void Run()
{
string[] args2 = Environment.GetCommandLineArgs();
// args2 = { "MyApp.exe", "a", "b", "c" }
foreach (var item in args2)
{
Console.WriteLine(item);
}
}
}
}
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.