Code archives/File Utilities/Command Line Parser
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| If the command line contains many values or switches, values can now be pulled easily. See code header for example. | |||||
; commandline scanner
; ===================
; Richard Hanson, PantsOn Software
; code can be used freely
; INPUT
; =====
; commandline = "/f pic.jpg /o hello.txt"
;
; SOURCE
; ======
; CMD_Init()
; Print CMD_param(2)
; Print CMD_switch("/o")
; CMD_free()
; WaitKey
;
; OUTPUT
; ======
; pic.jpg
; hello.txt
Type CMD_typ
Field index
Field command
Field cmdlne$
End Type
; return the value at parameter 'index'
Function CMD_param$(index)
; scan each type
For a.CMD_typ = Each CMD_typ
If a\index = index Then Return a\CMDlne$
Next
; return default if nothing found
Return ""
End Function
; return value with special 'command$' before
Function CMD_switch$(command$)
; find command
For a.CMD_typ = Each CMD_typ
If a\cmdlne$ = command$ Then tmp = a\index + 1
Next
; search for next value
For a.CMD_typ = Each CMD_typ
If a\index = tmp Then Return a\CMDlne$
Next
; return nothing if nothing set
Return ""
End Function
; call at start of the util
Function CMD_init()
; delete each type
Delete Each CMD_typ
index = 1
strng$ = CommandLine()
While strng<>""
s = 1
While Mid(strng,s,1) = " "
s = s + 1
If s > Len(strng)
s = -1
Exit
EndIf
Wend
If s = -1 Then Exit
srch$ = " "
If Mid(strng,s,1) = Chr(34) Then srch$ = Chr(34)
f = s + 1
If f > Len(strng)
f = s
Else
While Mid(strng,f,1) <> srch
f = f + 1
If f > Len(strng)
f = Len(strng)
Exit
EndIf
Wend
EndIf
param.CMD_typ = New CMD_typ
param\cmdlne = CMD_trim(Mid(strng,s,f - s + 1))
If Left(param\cmdlne,1) = "/" Then param\command = True
param\index = index
index = index + 1
strng = Right(strng,Len(strng)-f)
Wend
End Function
; use to free all CMD line values
Function CMD_free()
; delete each type
Delete Each CMD_typ
End Function
; used to trim value " and [SPACE]
Function CMD_trim$(strng$)
If strng = "" Then Return ""
s = 1
While Mid(strng,s,1) = " " Or Mid(strng,s,1) = Chr(34)
s = s + 1
If s > Len(strng) Then Return ""
Wend
f = Len(strng)
While Mid(strng,f,1) = " " Or Mid(strng,f,1) = Chr(34)
f = f - 1
If f = 0 Then Return ""
Wend
Return Mid(strng,s,f - s + 1)
End Function |
Comments
None.
Code Archives Forum