Login Register
Frontpage Code library Pastebin

CMDLine()

Author: Jare
Added: 10. tammikuuta 2013 kello 14.21
Edited: 19. helmikuuta 2021 kello 20.16
Category: Järjestelmä

Description

Edit 19.2.2021: Mikäli kaipaat monipuolisempaa POSIX-tyylistä komentorivin parsintaa, katso juuri tekemäni CommandLineArguments-kirjasto GitHubista. Tosin se on monimutkaisempi käyttää kuin tämä vanha CMDLine(). https://github.com/Taitava/cb-CommandLineArguments Palauttaa komentoriviltä halutun parametrin, toisin sanoen purkaa CommandLine()-funktion paluuarvon osiin älykkäästi. Käynnistysparametrit erotetaan toisistaan välilyönnillä. Jos haluat käyttää välilyöntiä osana parametria, ympäröi parametri lainausmerkeillä. Jos haluat käyttää lainausmerkkiä osana parametriä, syötä \". Ja jos haluat käyttää kenoviivaa, syötä se tuplana: \\. Funktion parametriksi annetaan halutun käynnistysparametrin numero alkaen ykkösestä. Funktio palauttaa parametrin ilman lainausmerkkejä, paitsi jos lainausmerkki on merkitty \". Edit: Tein vielä funktion joka laskee parametrien määrän.

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Function CMDLine(index)
    command_line$	= CommandLine()
    command_line	= Replace(command_line, "\\", Chr(1))
    command_line	= Replace(command_line, "\"+chr(34), Chr(2))
    parameter$		= ""
    old_char$		= " "
    quote_open		= False
    current_index	= 1
    For i = 1 To Len(command_line)
        char$ = Mid(command_line,i,1)
        If char=Chr(34) Then
            quote_open = Not quote_open
        ElseIf char=" " And False=quote_open And old_char <> " " Then
            current_index + 1
        ElseIf current_index = index Then
            parameter + char
        EndIf
        old_char = char
    Next i
    parameter = Replace(parameter, Chr(1), "\")
    parameter = Replace(parameter, Chr(2), Chr(34))
    Return parameter
EndFunction

Function CountCMDLineParameters()
    command_line$	= Trim(CommandLine())
    command_line	= Replace(command_line, "\\", Chr(1))
    command_line	= Replace(command_line, "\"+chr(34), Chr(2))
    old_char$		= " "
    quote_open		= False
    current_index	= 1
    If command_line = "" Then Return 0
    For i = 1 To Len(command_line)
        char$ = Mid(command_line,i,1)
        If char=Chr(34) Then
            quote_open = Not quote_open
        ElseIf char=" " And False=quote_open And old_char <> " " Then
            current_index + 1
        EndIf
        old_char = char
    Next i
    Return current_index
EndFunction

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.