10

コマンドラインから引数/フラグを読み取るときに、スラッシュ(/)またはハイフン( - )を使用する場合、それらの規則は書かれているか、または一般的に理解されていますか?コマンドラインフラグを実装するときは、フォワードスラッシュ(/)またはハイフン( - )を前に付ける必要がありますか?

C:\> myprogram.exe -a 
C:\> myprogram.exe /a 

2は、私の経験では交換可能であると思われるが、私は任意のルールやパターンを発見してきたと言うのに十分なコマンドラインツールを使用していません。

いずれかの理由がありますか?理論的にはアスタリスク(*)を使ってもいいですか?

+0

両方とも正常に動作するはずです。引数を解析するためのカスタム処理を挿入することができます。 – David

+1

Windowsでは、/ argsを使用できます。 Unix、Linux、およびWindowsでは、1文字のargには-xを、複数文字のargには-xyz-abcを使用する必要があります。 – Nayuki

+3

ウィンドウには厳しいルールはありませんが、ファイル名では '-'は完全に合法ですが、'/'はそうではありません。したがって、オプションはファイル名でも構いませんが、/オプションはそうではありません。アステリックスはコミックブックのキャラクターです。 '*'はアスタリスクです。 – Magoo

答えて

10

パラメータはコマンドラインプログラムに渡される文字列なので、(理論上は)任意のものを使用できます。

Windows標準では、スラッシュipconfig /allを使用することを推奨していますが、ハイフンgacutil -i、または並べ替え環境変数の構文setup SKUUPGRADE=1を使用するプログラムもあります。

* Nix規則では、単一文字パラメータの場合は-v、複数文字パラメータの場合はダブルハイフン--verboseを好むようです。

OSに依存しない(スラッシュは一部のOSではのパス区切り文字です)、より現代的なWindowsアプリケーション(たとえば、ナゲット)で使用されるため、ハイフンを好む傾向があります。

編集:

これは、.NETコマンドライン引数の解析を行い、ライブラリをお勧めするには良い場所でしょう:http://commandline.codeplex.com/

0

任意の文字を使用することも、先頭に文字を使用することもできます。それは何よりも基準を遵守することに関するものです。他のユーザーがあなたのアプリケーションを使用するときには、それらが慣れているので、引数を追加するときに - または/を追加すると考えられます。

4

通常、短期/長期オプションの場合、Windowsでは/、Unixシステムでは-/--です。しかし、そのためのルールはないので、実際はあなた次第です。

0

大手スラッシュ(/)は、Windowsアプリケーションの間で共通であります。単一のハイフン( - )は、POSIX準拠のアプリケーションで短いオプション(1文字で構成されるオプション)に共通です。ダブルハイフン( - )は、そのようなアプリケーションで長いオプションに共通です。

See this link for POSIX info.Or, see this SO post.

4

Command line options style - POSIX or what?参照してください。

DOSおよびWindowsの伝統は、/aまたは/extendのようにスラッシュを使用することです。 -aを使用する伝統は、Unix(およびおそらく他の場所)に由来します。

が単一のダッシュは-e -dのように、1文字のフラグのために使用されているGNU standardあります、そして、彼らは-edにマージすることができます(そう-ed-e -dに相当します)。その後、多くの文字のスイッチは--extend --displayのように2つのダッシュを必要とします。場合によっては、どのスイッチが意味するのかを推測するのに十分なだけの単語を書くだけでよい場合があります。したがって、という文字で他のスイッチが始まっていない場合は、の場合は--dispが短くてもかまいません。

+0

+1ダブルダッシュの背後にある理由に言及。私は単一のダッシュ( '-ed')で複数の文字が複数の単一文字スイッチとして扱われるべきであることを認識しませんでした。 – Connell

+0

Mercurialのhgは、スラッシュやスラッシュを必要としない点が厳密に異なりますが、必要なものを明確に識別するのに十分な文字を入力するだけでよい(例: "hg st")。 – JerKimball

1

古いDOSコマンドでは、省略可能なパラメータの接頭辞/を使用していました。マイクロソフトでは、PosixのPowerShellコマンドライン標準のドキュメントに記載されているようなパラメータの使用をサポートする方向に向かっています。これは、オペレーティングシステムがディレクトリセパレータ文字として\と/の両方を表示するためです。

https://technet.microsoft.com/en-us/library/ee156811.aspx

関連する問題