Command
 
返回用于调用程序的命令行参数

语法

Declare Function Command ( ByVal index As Integer = -1 ) As String

用法

result = Command[$]( [ index ] )

参数

index
特定命令行参数的基于零的索引。

返回值

返回命令行参数。

说明

Command返回执行时传递给程序的命令行参数。

如果index 小于零(< 0),则返回所有命令行参数的空格分隔列表,否则返回单个参数。值为零(0)返回可执行文件的名称;和一个(1)的值和更大的返回每个命令行参数。

如果index 大于传递给程序的参数数,则返回空字符串("")。

当为参数解析命令行时,参数列表中双引号之间的所有内容将被视为单个参数,并以双引号返回。

默认情况下,在FreeBASIC的所有端口上都使用参数的文件名globbing(扩展通配符到文件名)来兼容。包含通配符的命令行上的参数通常不会扩展,如果没有文件匹配或正确引用。重定向的其他特殊字符通常不会返回,除非正确引用。有关正确引用命令行参数的更多信息,请参阅所用shell的文档。

警告:通过FreeBASIC和main()初始化中的构造函数优先级的性质,在全局构造函数(调用静态/共享对象的模块构造函数或UDT构造函数)中调用Command是不安全的(甚至可能会导致运行时错误)。

在Win32 下禁用文件名
在源中的某处定义以下全局变量:
'' 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 下禁用文件名称
在源中定义以下函数:
Function __crt0_glob_function Alias "__crt0_glob_function" ( ByVal arg As UByte Ptr ) As UByte Ptr Ptr
  Return 0
End Function


在Linux下禁用文件名globbing
文件名globbing由命令shell处理。在执行命令之前,引用包含通配符的参数或在shell中禁用文件名globbing。例如在bash中使用'set -f'来禁用通配符扩展

例子

Print "节目通过:" & Command(0)

Dim As Integer 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没有。
  • 默认情况下,扩展包含通配符的参数(filename globbing)

参考