Es gibt keins. Aber es ist ziemlich trivial.
For each ag in wscript.arguments
CMDLINE = CMDLINE & " " & ag
Next
wscript.echo mid(CMDLINE, 2)
oder
For each ag in wscript.arguments
If Instr(Ag, " ") = True then
CMDLINE = CMDLINE & " " & Chr(34) & ag & Chr(34)
Else
CMDLINE = CMDLINE & " " & ag
End if
Next
wscript.echo mid(CMDLINE, 2)
Und
C:\Users\User>cscript //nologo "C:\Users\User\Desktop\New Text Document (3).vbs" cat dog "mouse and cat"
cat dog mouse and cat
Dies gilt für VBScript und VBA.
Diese beiden Grundlagen werden von anderen Programmen gehostet. Es ist der Host, der Befehlszeileninformationen sammelt (falls vorhanden). Es ist der Host, der es VBS über ein Objekt im Fall von wscript zur Verfügung stellt, aber nicht, wenn es in IE/IIS gehostet wird. Und VBA hat eine Host-implementierte Funktion (implementiert von Corel Office, Microsoft Office und VB6).
Function Declaration
Function Command() As Variant
Function Command$() As String
Runtime Semantics.
Returns the argument portion of the implementation dependent command used to initiate execution of the currently executing VBA program.
The runtime semantics of Command$ are identical to those of Command with the exception that the declared type of the return value is String rather than Variant.
Unter der Haube (Ich habe keine Parsingverhalten Absätze entfernt) (und beachten Sie ANSI/Unicode Unterschiede)
CommandLineToArgvW Funktion
Analysiert eine Unicode-Befehlszeilen-Zeichenfolge und kehrt ein Array von nullterminierten Unicode-Zeichenfolgen, die die einzelnen Argumente enthalten, die in dieser Befehlszeile gefunden werden, sowie eine Anzahl von Argumenten, ähnlich den Standard-Argov- und Argc-Werten für die Laufzeit in der Laufzeit.
Syntax
LPWSTR *CommandLineToArgvW( LPCWSTR lpCmdLine,
int *pNumArgs
);
Parameter
Diese Funktion akzeptiert Linien Befehl einen Programmnamen enthält, die entweder in Anführungszeichen gesetzt ist oder nicht in Anführungszeichen eingeschlossen.
CommandLineToArgvW hat eine spezielle Auslegung der umgekehrten Schrägstrich-Zeichen, wenn sie von einem Anführungszeichen Zeichen gefolgt sind ("), wie folgt:
2n Schrägstriche durch ein Anführungszeichen produzieren n Schrägstriche gefolgt durch ein Zitat folgte Markierung
(2n) + 1 umgekehrte Schrägstriche gefolgt von einem Anführungszeichen wieder produzieren n Backslashes gefolgt von einem Anführungszeichen.
n Backslashes nicht gefolgt von einem Anführungszeichen einfach produzieren n Backslashes.
GetCommandLine
Ruft die Befehlszeilenzeichenfolge für den aktuellen Prozess.
LPTSTR WINAPI GetCommandLine(void);
ANSI Konsole Prozesse in C geschrieben wurde, kann die argc und argv Argumente der Hauptfunktion verwenden, um die Befehlszeilenargumente zuzugreifen. ANSI-GUI-Anwendungen können den LpCmdLine-Parameter der WinMain-Funktion verwenden, um auf die Befehlszeile-Zeichenfolge zuzugreifen, die den Programmname ausschließt. Der Grund dafür, dass main und WinMain keine Unicode-Zeichenfolgen zurückgeben können, liegt darin, dass argc, argv und lpCmdLine den LPSTR-Datentyp für Parameter und nicht den LPTSTR-Datentyp verwenden. Die Funktion GetCommandLine kann für den Zugriff auf Unicode-Zeichenfolgen verwendet werden, da sie den LPTSTR-Datentyp verwendet.
Um die Befehlszeile in ein argv-arrayarray zu konvertieren, rufen Sie die Funktion CommandLineToArgvW auf.
Hinweis Der Name der ausführbaren Datei in der Befehlszeile, die das Betriebssystem für einen Prozess bereitstellt, stimmt nicht unbedingt mit dem Namen in der Befehlszeile überein, die der aufrufende Prozess der CreateProcess-Funktion gibt. Das Betriebssystem kann einen vollständig qualifizierten Pfad einem ausführbaren Namen voranstellen, der ohne einen vollständig qualifizierten Pfad bereitgestellt wird.
Argumente mit Leerzeichen müssen angegeben werden. –
'Instr (Ag," ") = True" verstößt gegen die Regel "Nie mit True/False vergleichen" (http://blogs.msdn.com/b/ericlippert/archive/2004/07/15/184431.aspx) . –
Ihr zweiter Codeblock benötigt ebenfalls ein 'End If'. – Bond