Was ist das Äquivalent der Shell-Variablen $@ in Windows-Befehlen?

Was ist das Äquivalent der Shell-Variablen $@ in Windows-Befehlen?

Ich möchte in mein Befehls-Batch-Skript eine Variable für mehrere Argumente einfügen, da die Anzahl variieren kann. Genau wie in der Shell verwenden wir $@. Ich habe verschiedene Dinge ausprobiert, aber nichts funktioniert.

[Bearbeiten: Ich weiß, dass %* funktioniert, aber eigentlich musste ich den SHIFT-Operator verwenden, um das erste Argument zu entfernen und den Rest einer Variablen zuzuweisen. Aber wenn ich SHIFT drücke und %* überprüfe, werden im Gegensatz zur Unix-Shell immer noch alle ursprünglichen Argumente angezeigt.]

Derzeit verwende ich dazu eine FOR-Schleife, wollte aber wissen, ob es einen anderen Befehl/eine andere Methode gibt, um das erste Argument zu POPen und den Rest einer anderen Variablen zuzuweisen.

zB: SomeCommand "mehrere Argumente"

Antwort1

%*enthält in einer Batchdatei alle an das Skript übergebenen Argumente (mit Ausnahme des Skriptnamens selbst), genau so, wie sie geschrieben wurden.

Das hier könnte für Sie ebenfalls hilfreich sein:

%0- der Befehl zum Aufrufen der Batchdatei (könnte foo, ..\foo, c:\bats\foo.bat, usw. sein)
%1ist der erste Befehlszeilenparameter,
%2ist der zweite Befehlszeilenparameter
und so weiter bis %9(und SCHICHT kann für diejenigen nach dem 9. verwendet werden).

Sehen Anleitung: Übergeben von Befehlszeilenargumenten (Parametern) an eine Windows-Batchdatei.

Ein Beispiel für die Verwendung SHIFTdes folgenden Befehls:

batchfile.bat The Quick Brown
  • Wie angegeben: %0=The Quick Brown, %1=The, %2=Quick, %3=Brown.
  • Nach SHIFT: %0=The Quick Brown, %1=Quick, %2=Brown
  • Nach einem zweiten SHIFT: %0=The Quick Brown, %1=Brown

Auf die Frage „alles außer dem ersten Parameter“ gibt es keine gute Antwort. Die Batch-Sprache ist nicht präzise genug für eine Methode, die für alle möglichen Parameter funktioniert, daher ist die Verwendung von SHIFT die beste Methode.

Eine Diskussion möglicher Lösungen finden Sie im Beitrag
Gibt es eine Möglichkeit, die letzten n Parameter in einer Batchdatei anzugeben?

verwandte Informationen