COMMAND

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » C » COMMAND

Syntax: COMMAND[$] [(index)]
Typ: Funktion
Kategorie: Verschiedenes

COMMAND enthält die Kommandozeilenparameter an das Programm.

Der optionale Parameter 'index' gibt an, dass nur der n-te Kommandozeilenparameter zurückgegeben werden soll. Wird 'index' ausgelassen oder ist kleiner als 0, so gibt FreeBASIC alle Kommandozeilenparameter zurück. Ist 'index' = 0, so gibt FreeBASIC Pfad und Dateiname des aufgerufenen Programms zurück. Ist der angegebene Index größer als die Anzahl der Parameter, so wird ein leerer String ("") zurückgegeben.

Beim Lesen der Parameter wird alles innerhalb von Anführungszeichen als ein Parameter betrachtet. So lassen sich mehrere Begriffe zusammengehörig als Parameter an ein Programm übergeben.

Das Dollarzeichen ($) als Suffix ist optional.

COMMAND sollte nicht in einem globalen Konstruktor aufgerufen werden. Aufgrund der Art, wie FreeBASIC arbeitet, erhält man in diesem Fall immer eine leere Liste. Dies könnte sich in Zukunft ändern.

Beispiel:

'Prog1.bas
SHELL "Prog2.exe /parameter1 /parameter2"

'Prog2.bas, liegt auch als kompilierte Datei Prog2.exe vor:
PRINT COMMAND
PRINT COMMAND(2)
PRINT COMMAND(0)

Ausgabe:

/parameter1 /parameter2
/parameter2
C:\BASIC\freeBASIC\Prog2.exe

Wildcards (siehe DIR) werden standardmäßig aufgefüllt. So entsteht eine vollständige Liste aller passenden Treffer, die als Parameter übergeben werden. Wenn es keine passenden Treffer gibt oder der Parameter in Anführungszeichen gesetzt wird, werden die Wildcards nicht aufgefüllt. Es gibt weitere, plattformspezifische Möglichkeiten, das Auffüllen zu unterdrücken:

Unter Windows fügt man folgendes an den Anfang des Codes:

Extern _CRT_glob Alias "_CRT_glob" As Integer
Dim Shared _CRT_glob As Integer = 0

Unter DOS kann man folgenden Code verwenden:

Public Function __crt0_glob_function Alias "__crt0_glob_function" ( ByVal arg As UByte Ptr ) As UByte Ptr Ptr
  Return 0
End Function

Unter Linux ist die Shell selbst dafür zuständig. Hier kann man das Auffüllen etwa mit dem Befehl set -f ausschalten.

Unterschiede zu QB:

Unterschiede unter den FB-Dialektformen:

Siehe auch:
SHELL, EXEC, EXEPATH, RUN, __FB_ARGC__, __FB_ARGV__, Betriebssystem-Anweisungen