FreeBASIC Command
目次→実行時ライブラリー参考→オペレーティング・システム関連→COMMAND←オリジナル・サイト
プログラムを呼ぶために使われる、コマンドラインのパラメータを返します。
構文:
用法:
result = Command[$]( [ index ] )
パラメタ:
index
特定のコマンドライン引数のための、ゼロ・ベースのインデックス。
戻り値:
コマンドライン引数を返します。
記述:
Command は、実行時にプログラムに渡された、コマンドライン引数を返します。
index が、ゼロ未満(< 0)であれば、空白で切り離して、すべてのコマンドライン引数のリストを返します。引数が一つなら、一つの引数を返します。
値がゼロ (0) なら、実行可能ファイルの名前を返します。
そして、値が1 (1) 以上の場合は、それぞれのコマンドライン引数を返します。
index がプログラムに渡された引数の数より大きいと、ヌル文字列 ("") が返ります。
コマンドラインを、引数として分析するとき、パラメータ・リスト内の二重引用符の間のすべてを、単一のブロックとみなして、二重引用符なしで返されます。
デフォルトで、引き数として glob(ワイルドカード・マッチ) するファイル名(ファイル名へのワイルドカードの拡張)は、互換性のために FreeBASIC のすべてのポート上で使用されます。
ワイルドカードを含むコマンドラインの引数は、ファイルが一致しないか、あるいは適切に引用符で囲まれれば、一般的に拡張しません。
リダイレクション(書き換え)のための他の特殊文字は、適切に引用符で囲まないかぎり、通常返されません。
コマンドライン引数の、適切な引用符について、使われるシェルについての詳しい情報に関する文書を参照してください。
コマンドライン引数で backslash(\) を使うと、奇妙な動作が発生する可能性があり、結果はプラットフォームによって異なります。
- 警告:
FreeBASIC および main() 初期化の構築子先行の性質によって、Command を、グローバルな構築子(静的/共有のオブジェクトのために呼ばれた、モジュール構築子あるいは UDT 構築子)内で呼ぶことは、安全ではありません(ランタイムエラーさえ引き起こすかもしれません)。
Windows の下で、globbing されるファイル名を無効化する
ソースのどこかで、下のグローバル変数を定義してください:
'' For MinGW.org and Cygwin runtimes:
Extern _CRT_glob Alias "_CRT_glob" As Long
Dim Shared _CRT_glob As Long = 0
'' For MinGW-w64 runtime:
Extern _dowildcard Alias "_dowildcard" As Long
Dim Shared _dowildcard As Long = 0
Dos の下で、globbing されるファイル名を無効化する
ソースのどこかで、以下の関数を定義します:
Function __crt0_glob_function Alias "__crt0_glob_function" ( ByVal arg As UByte Ptr ) As UByte Ptr Ptr
Return 0
End Function
Linux の下で、globbing されるファイル名を無効化する
ファイル名 globbing は、コマンドシェルによって扱われます。
ワイルドカードを含む引数を引用符で囲んで下さい。または、コマンドを実行する前に、シェルの中に globbing されるファイル名を無効にしてください。
例えば、ワイルドカード拡張を無効にするために、'set -f' を使ってみます。
例:
Print "実行ファイル・フルパス: " & Command(0)
Dim As Long i = 1
Do
Dim As String arg = Command(i)
If Len(arg) = 0 Then
Exit Do
End If
Print "コマンドライン引数 " & i & " = """ & arg & """"
i += 1
Loop
If i = 1 Then
Print "(コマンドライン引数無し)"
End If
Sleep
方言差:
QBからの違い:
- 数値引数は、QBではサポートされませんでした。
- QB は、パラメータ・リストを返す前に、大文字に変換しました。FreeBASIC は、変換しません。
- デフォルトで、ワイルドカード文字を含む引数が、拡張されます。
(ファイル名 globbing)
参照:
ページ歴史:2023-09-07 16:46:11
日本語翻訳:WATANABE Makoto、原文著作者:SysOp