Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
コマンドライン引数の書式
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30537#CommentId84178
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2020/9/9 10:17:14
> コマンドライン引数の書式はどうするのが一般的でしょうか?
汎用化された引数解析ライブラリとして、CommandLineParser がしばしば使われます。
https://www.nuget.org/packages/CommandLineParser/
https://qiita.com/skitoy4321/items/742d143b069569014769
同種のライブラリは他にもあります。それぞれのライブラリごとに
コマンドライン構文が多少異なりますので、好みで選択してみてください。
あるいはこういったものに頼らず、
LINQ を併用するなどして自力解析するのも手でしょう。
> 今後オプションスイッチを追加することを考慮して、
> 引数パラメータの順序は不問にしたいと思います。
ID は必須で一つだけ、ファイルも必須で 1 つ以上、という条件なら、
最初の引数は ID 固定、それ以降の引数はファイル群という、
位置指定の引数定義が使いやすいかと思いますが、今後の拡張で
他のオプションも必要とするのなら、パラメータ名を付けるのが良いでしょうね。
位置指定モードと名前指定モードのどちらも使える実装にするのもあり。
> test.exe id=AAA path="C:\xxx\yyy\test.txt"
自分なら、
test.exe /id:AAA /path:"C:\xxx\yyy\test.txt"
test.exe -id AAA -path "C:\xxx\yyy\test.txt"
のいずれかにするかな…。
前者は、WScript の WshArguments で使われる引数構文。
後者は、PowerShell の Param で使われる引数構文。
あるいは先の CommandLineParser のルールに合わせる場合、
test.exe --id AAA --path "C:\xxx\yyy\test.txt"
test.exe -i AAA -p "C:\xxx\yyy\test.txt"
のような構文になりますね。
このほか、.ini やパラメーターファイルを受け取って処理させる手もあります。
たとえば、Visual Basic コンパイラの VBC.EXE の場合、
参照設定情報を毎度指定するのは煩わしいので、.rsp ファイル
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\vbc.rsp
から読み取る仕様になっています。(-nostdlib オプションで無効化可能)
別ファイルや環境変数に頼る仕様は、個人的には好きではありませんが。
あるいは jq のように、JSON 文字列を引数に取るのも面白いかも。
階層構造や配列データも受け取れるようになり、表現の幅が広がります。
> ID(英数字)と指定ファイルのパス(C:\xxx\yyy\test.txtのような感じ)で、
この条件だけだとしても、いろいろと考慮すべきことがあります。
たとえば、そのファイルは入力用でしょうか、出力用でしょうか。
入力用なら、ワイルドカード(*.txt)などを指定できるのか、とか、
出力用なら、実在するファイルが必要なのか、存在しないファイルを指定できるのかも
定義しておく必要があるでしょう。
また、ファイルが .txt とのことですが、使用される文字コードを
指定するためのパラメーターは無くて良いのか? それとも文字コードは固定なのかとか。
ID パラメーターは省略できるのでしょうか、それとも必須なのでしょうか。
ファイルを複数指定することはできるのでしょうか。
ファイルを複数指定できる場合、指定する ID は一つとなるのか。
それともファイルの数だけ ID が必要となるのか、などなど。