返回用于调用程序的命令行参数
语法
用法
result = Command[$]( [ 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)
参考