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 pip
Aufrufen ein benutzerdefiniertes Proxy-Argument hinzufügt:
pip.exe --proxy="myproxy" %1 %2 %3 %4 %5
Wie Sie sehen, verwende ich %1
die Notation, um Argumente von pip.cmd
nach 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 %0
ist der Befehls-/Programmname und %*
alle Parameter.
SehenDieser Artikel.