Äquivalent zu `$@` für die Windows-Shell

Äquivalent zu `$@` für die Windows-Shell

Ich verwende Batchdateien, um Wrapper für einige Befehle zu erstellen, die zusätzliche Argumente benötigen, um zu funktionieren. Ich habe beispielsweise eine Datei pip.cmd, die allen pipAufrufen ein benutzerdefiniertes Proxy-Argument hinzufügt:

pip.exe --proxy="myproxy" %1 %2 %3 %4 %5

Wie Sie sehen, verwende ich %1die Notation, um Argumente von pip.cmdnach zu übertragen pip.exe. Mein Ansatz funktioniert jedoch nicht, wenn mehr als 5 Argumente vorhanden sind. Unter Linux würde ich einfach verwenden "$@", das alle Argumente auf einmal verarbeitet. Gibt es eine ähnliche Notation oder einen sinnvollen Workaround für eine Windows-Shell?

Antwort1

Gibt es eine ähnliche Notation oder einen sinnvollen Workaround für eine Windows-Shell?

%*ist das cmdÄquivalent zu $@in Unix.

Notiz:

  • Es sind maximal 255 Parameter zulässig.

Beispiel (pip.cmd):

pip.exe --proxy="myproxy" %*

Befehlszeilenargumente (Parameter)

%*in einem Batch-Skript bezieht sich auf alle Argumente (zB %1 %2 %3 %4 %5 ...%255)

Quelle -Parameter


Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • Parameter– Ein Befehlszeilenargument (oder Parameter) ist ein beliebiger Wert, der an ein Batch-Skript übergeben wird.

Antwort2

Sie können Folgendes verwenden %*:

@echo off
echo %0
echo %*

Wenn Sie dies ausführen, erhalten Sie:

C:\>test.cmd this is a test 1 2  3  4  5 6 7 8
test.cmd
this is a test 1 2  3  4  5 6 7 8

Wo %0ist der Befehls-/Programmname und %*alle Parameter.

SehenDieser Artikel.

verwandte Informationen