# fbcmdparser **Repository Path**: elfkid/fbcmdparser ## Basic Information - **Project Name**: fbcmdparser - **Description**: freebasic cmdline parser - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-03 - **Last Updated**: 2026-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README freebasic 命令行 解析器 1、单文件,只有一个fbcmdparser.bi 头文件 2、使用方法:#include once "fbcmdparser.bi" --------------------------用法示例---------------------------- ``` Dim parser As CommandLineParser ' ========== 1. 定义参数 ========== ' 标志类参数 parser.AddArg("/H", "/HIDE", "以隐藏模式运行其他程序(无窗口)", ARG_FLAG) parser.AddArg("/C", "/CLR", "清空回收站", ARG_FLAG) parser.AddArg("/HIB", "/HIBERNATE", "休眠系统", ARG_FLAG) parser.AddArg("/I", "/ICON", "刷新系统图标", ARG_FLAG) parser.AddArg("/?", "/HELP", "显示帮助", ARG_FLAG) ' 单值参数: parser.AddArg("/P", "/Power", "电源操作:shutdown/logoff/reboot/hibernate/sleep", ARG_SINGLE, 0, "", 1, 1) ' 多值参数: parser.AddArg("/N", "/NORMAL", "管理员权限下以普通权限执行程序,[program] [argment]", ARG_MULTI, 0, "", 1, 3) ' 至少1个值 parser.AddArg("/L", "/LEVEL", "指定完整性级别执行:[low|medium|high|System|trust] [program] [argments]", ARG_MULTI, 0, "", 2, 0) ' 至少2个值:级别 和 命令 parser.AddArg("/SCT", "/LNK", "创建快捷方式, [all|clr|fico|shtdn|reboot|hib|logoff] [lnkSaveDir]", ARG_MULTI, 0, "", 1, 2) ' 1或2个值 parser.AddArg("/USB", "", "弹出USB设备,可指定多个盘符[h i j k……],以空格隔开", ARG_MULTI, 0, "", 0, 0) ' 位置参数 parser.AddPosArgDef("Any command", "以管理员权限执行的程序", 0) ' ========== 2. 解析命令行 ========== If parser.Parse() = 0 Then Print "参数解析错误: " + parser.GetError() Exit Sub End If Dim hideMode As Integer = parser.HasArg("/H") Or parser.HasArg("/HIDE") ' ========== 3. 处理各个选项 ========== If parser.HasArg("/?") Or parser.HasArg("/HELP") Then parser.ShowHelp Exit Sub End If If parser.HasArg("/C") Or parser.HasArg("/CLR") Then Print "/c" Exit Sub End If If parser.HasArg("/HIB") Or parser.HasArg("/HIBERNATE") Then Print "/hib" Exit Sub End If If parser.HasArg("/I") Or parser.HasArg("/ICON") Then print "/i" Exit Sub End If If parser.HasArg("/P") Or parser.HasArg("/Power") Then Dim powerOp As String = LCase(parser.GetValue("/P")) Print "/p", powerOp Exit Sub End If If parser.HasArg("/USB") Then Dim c As Integer = parser.GetValueCount("/USB") print "ejectall" End If Exit Sub End If If parser.HasArg("/SCT") Or parser.HasArg("/LNK") Then Dim valCount As Integer = parser.GetValueCount("/SCT") Dim pVal As String Ptr = parser.GetValuearrptr("/SCT") Print pVal[0], pVal[1] Exit Sub End If If parser.HasArg("/L") Or parser.HasArg("/LEVEL") Then Dim cmdCount As Integer = parser.GetValueCount("/L") If cmdCount -1 < 1 Then Print "错误:/L 缺少命令参数" Exit Sub End If Dim pVal As String Ptr = parser.GetValueArrPtr("/L") Dim apps As String = pVal[1] Dim args As String If cmdCount > 2 Then args = pVal[2] For j As Integer = 3 To cmdCount - 1 args += " " + pVal[j] Next End If Print "app", apps Exit Sub End If If parser.HasArg("/N") Or parser.HasArg("/NORMAL") Then Dim fullcmd As String = parser.GetValueString("/N") ' If fullCmd = "" Then Print "错误:/N 缺少命令" Exit Sub End If Print "fullcmd", fullCmd Exit Sub End If Dim ac As Integer = parser.GetPosArgCount() If ac > 0 Then print "位置参数数量:" , ac End If ```