Referenz - COMMAND
Syntax: COMMAND[$] [(index)]
Typ: Funktion
Kategorie: System
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 compilierte 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 bis fbc 0.24 fügt man folgendes an den Anfang des Codes:
Extern _CRT_glob Alias "_CRT_glob" As Long
Dim Shared _CRT_glob As Long = 0
Unter Windows ab fbc 0.90:
Extern _dowildcard Alias "_dowildcard" As Long
Dim Shared _dowildcard As Long = 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:
- COMMAND hat in QB keinen Index-Parameter.
- In QB werden alle Buchstaben der Parameterliste großgeschrieben zurückgegeben.
- In QB werden Wildcards nicht aufgelöst.
Unterschiede unter den FB-Dialektformen:
- In der Dialektform -lang qb ist das Suffix $ verbindlich.
- In den Dialektformen -lang fblite und -lang fb ist das Suffix optional.
Siehe auch:
SHELL, EXEC, EXEPATH, RUN, __FB_ARGC__, __FB_ARGV__, Betriebssystem-Anweisungen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|