DoboWiki
Top
> .NETプログラミング研究/109 をテンプレートにして作成
.NETプログラミング研究/109 をテンプレートにして作成
開始行:
#title(Command Line Parser Libraryを使ってコマンドライン...
#navi(.NETプログラミング研究)
#contents
*Command Line Parser Libraryを使ってコマンドライン引数を...
今回は前回に続いて、[[Command Line Parser Library>http://...
**大文字と小文字を区別する [#z7ab79e4]
今まで紹介してきた方法で解析すると、オプション名の大文字...
大文字と小文字が区別されるようにするには、CaseSensitiveプ...
以下にその例を示します。
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'大文字と小文字を区別するようにする
Dim p = New CommandLine.Parser(Sub(w) w.CaseSensi...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
'解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputF...
Console.WriteLine("Overwrite: {0}", opts.Overwrite)
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//大文字と小文字を区別するようにする
var p = new CommandLine.Parser(with => with.CaseSensi...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
//解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputFile);
Console.WriteLine("Overwrite: {0}", opts.Overwrite);
Console.ReadLine();
}
}}
**不明なオプションを無視する [#w2e91ec6]
デフォルトでは、コマンドライン引数に不明なオプション(Opt...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'不明なオプションを無視する
Dim p = New CommandLine.Parser(Sub(w) w.IgnoreUnk...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
'解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputF...
Console.WriteLine("Overwrite: {0}", opts.Overwrite)
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//不明なオプションを無視する
var p = new CommandLine.Parser(with => with.IgnoreUnk...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
//解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputFile);
Console.WriteLine("Overwrite: {0}", opts.Overwrite);
Console.ReadLine();
}
}}
**同時に指定できないオプションを設定する [#ace3b62b]
私が試した限りでは、この機能はドキュメントで説明されてい...
あるオプションと別のオプションを同時に指定できないように...
#column(補足){{
ドキュメントの「[[Mutually Exclusive Options>https://gith...
}}
以下の例では、TextFileとXmlFileのMutuallyExclusiveSetが"f...
#code(vbnet){{
Public Class Options
<CommandLine.Option("t"c, "textfile", MutuallyExclusi...
Public Property TextFile As String
<CommandLine.Option("x"c, "xmlfile", MutuallyExclusiv...
Public Property XmlFile As String
<CommandLine.Option("v"c)> _
Public Property Overwrite As Boolean
End Class
}}
#code(csharp){{
public class Options
{
[CommandLine.Option('t', "textfile", MutuallyExclusiv...
public string TextFile
{
get;
set;
}
[CommandLine.Option('x', "xmlfile", MutuallyExclusive...
public string XmlFile
{
get;
set;
}
[CommandLine.Option('v')]
public bool Overwrite
{
get;
set;
}
}
}}
このMutuallyExclusiveSetを有効にするには、解析を行うとき...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'MutuallyExclusiveをTrueにする
Dim p = New CommandLine.Parser(Sub(w) w.MutuallyE...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//MutuallyExclusiveをTrueにする
var p = new CommandLine.Parser(with => with.MutuallyE...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
Console.ReadLine();
}
}}
このようにして以下のようなコマンドライン引数を渡すと、解...
-t 1.txt -x 1.xml
MutuallyExclusiveSetに何も指定されていないオプションであ...
**カルチャを変更する [#ea149381]
前回指摘したように、例えばコマンドライン引数から整数のオ...
解析で使用するカルチャを変更するには、ParserのParsingCult...
なおParser.DefaultのParsingCultureプロパティは、Invariant...
以下の例では、解析に使用するカルチャを"ja-JP"に変更してい...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'カルチャを"ja-JP"に変更する
Dim p = New CommandLine.Parser(Sub(w) w.ParsingCu...
New System.Globalization.CultureInfo("ja-JP"))
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//カルチャを"ja-JP"に変更する
var p = new CommandLine.Parser(with => with.ParsingCu...
new System.Globalization.CultureInfo("ja-JP"));
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
Console.ReadLine();
}
}}
**「Parser.Default」と「new Parser()」の違い [#q4918994]
非常に厄介なことに、前回使用していた「Parser.Default」と...
Parser.DefaultのCaseSensitiveはFalseですが、コンストラク...
MutuallyExclusiveとIgnoreUnknownArgumentsは、両者ともFals...
また、次回詳しく説明しますが、HelpWriterプロパティも両者...
**次回予告 [#h493b01f]
今回で終わりにする予定でしたが、予想外に長くなってしまい...
**コメント [#g57bbbd1]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2013-0...
終了行:
#title(Command Line Parser Libraryを使ってコマンドライン...
#navi(.NETプログラミング研究)
#contents
*Command Line Parser Libraryを使ってコマンドライン引数を...
今回は前回に続いて、[[Command Line Parser Library>http://...
**大文字と小文字を区別する [#z7ab79e4]
今まで紹介してきた方法で解析すると、オプション名の大文字...
大文字と小文字が区別されるようにするには、CaseSensitiveプ...
以下にその例を示します。
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'大文字と小文字を区別するようにする
Dim p = New CommandLine.Parser(Sub(w) w.CaseSensi...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
'解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputF...
Console.WriteLine("Overwrite: {0}", opts.Overwrite)
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//大文字と小文字を区別するようにする
var p = new CommandLine.Parser(with => with.CaseSensi...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
//解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputFile);
Console.WriteLine("Overwrite: {0}", opts.Overwrite);
Console.ReadLine();
}
}}
**不明なオプションを無視する [#w2e91ec6]
デフォルトでは、コマンドライン引数に不明なオプション(Opt...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'不明なオプションを無視する
Dim p = New CommandLine.Parser(Sub(w) w.IgnoreUnk...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
'解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputF...
Console.WriteLine("Overwrite: {0}", opts.Overwrite)
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//不明なオプションを無視する
var p = new CommandLine.Parser(with => with.IgnoreUnk...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
//解析結果を表示
Console.WriteLine("OutputFile: {0}", opts.OutputFile);
Console.WriteLine("Overwrite: {0}", opts.Overwrite);
Console.ReadLine();
}
}}
**同時に指定できないオプションを設定する [#ace3b62b]
私が試した限りでは、この機能はドキュメントで説明されてい...
あるオプションと別のオプションを同時に指定できないように...
#column(補足){{
ドキュメントの「[[Mutually Exclusive Options>https://gith...
}}
以下の例では、TextFileとXmlFileのMutuallyExclusiveSetが"f...
#code(vbnet){{
Public Class Options
<CommandLine.Option("t"c, "textfile", MutuallyExclusi...
Public Property TextFile As String
<CommandLine.Option("x"c, "xmlfile", MutuallyExclusiv...
Public Property XmlFile As String
<CommandLine.Option("v"c)> _
Public Property Overwrite As Boolean
End Class
}}
#code(csharp){{
public class Options
{
[CommandLine.Option('t', "textfile", MutuallyExclusiv...
public string TextFile
{
get;
set;
}
[CommandLine.Option('x', "xmlfile", MutuallyExclusive...
public string XmlFile
{
get;
set;
}
[CommandLine.Option('v')]
public bool Overwrite
{
get;
set;
}
}
}}
このMutuallyExclusiveSetを有効にするには、解析を行うとき...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'MutuallyExclusiveをTrueにする
Dim p = New CommandLine.Parser(Sub(w) w.MutuallyE...
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//MutuallyExclusiveをTrueにする
var p = new CommandLine.Parser(with => with.MutuallyE...
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
Console.ReadLine();
}
}}
このようにして以下のようなコマンドライン引数を渡すと、解...
-t 1.txt -x 1.xml
MutuallyExclusiveSetに何も指定されていないオプションであ...
**カルチャを変更する [#ea149381]
前回指摘したように、例えばコマンドライン引数から整数のオ...
解析で使用するカルチャを変更するには、ParserのParsingCult...
なおParser.DefaultのParsingCultureプロパティは、Invariant...
以下の例では、解析に使用するカルチャを"ja-JP"に変更してい...
#code(vbnet){{
Module Module1
'エントリポイント
Sub Main(args As String())
'Optionsクラスのインスタンスを作成
Dim opts = New Options()
'カルチャを"ja-JP"に変更する
Dim p = New CommandLine.Parser(Sub(w) w.ParsingCu...
New System.Globalization.CultureInfo("ja-JP"))
'コマンドライン引数を解析する
Dim isSuccess As Boolean = p.ParseArguments(args,...
Console.ReadLine()
End Sub
End Module
}}
#code(csharp){{
//エントリポイント
static void Main(string[] args)
{
//Optionsクラスのインスタンスを作成
var opts = new Options();
//カルチャを"ja-JP"に変更する
var p = new CommandLine.Parser(with => with.ParsingCu...
new System.Globalization.CultureInfo("ja-JP"));
//コマンドライン引数を解析する
bool isSuccess = p.ParseArguments(args, opts);
Console.ReadLine();
}
}}
**「Parser.Default」と「new Parser()」の違い [#q4918994]
非常に厄介なことに、前回使用していた「Parser.Default」と...
Parser.DefaultのCaseSensitiveはFalseですが、コンストラク...
MutuallyExclusiveとIgnoreUnknownArgumentsは、両者ともFals...
また、次回詳しく説明しますが、HelpWriterプロパティも両者...
**次回予告 [#h493b01f]
今回で終わりにする予定でしたが、予想外に長くなってしまい...
**コメント [#g57bbbd1]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2013-0...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]