เทียบเท่ากับ $ $ `สำหรับเชลล์ windows


1

ฉันใช้แบตช์ไฟล์เพื่อสร้างคำล้อมรอบคำสั่งบางคำซึ่งต้องการอาร์กิวเมนต์พิเศษเพื่อให้ทำงานได้ ตัวอย่างเช่นฉันมีไฟล์pip.cmdที่เพิ่มอาร์กิวเมนต์พร็อกซีที่กำหนดเองให้กับการpipโทรทั้งหมด:

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

อย่างที่คุณเห็นฉันใช้%1สัญกรณ์ในการถ่ายโอนอาร์กิวเมนต์ของpip.cmdไปยังpip.exeอย่างไรก็ตามแนวทางของฉันจะหยุดหากมีมากกว่า 5 ข้อโต้แย้ง ในลีนุกซ์, ฉันจะใช้"$@", ซึ่งจัดการกับข้อโต้แย้งทั้งหมดในคราวเดียว. มีสัญกรณ์ที่คล้ายกันหรือวิธีแก้ปัญหาที่เหมาะสมสำหรับเชลล์ Windows หรือไม่?


คุณสามารถรวมหลายพารามิเตอร์เข้าด้วยกันโดยอ้างถึงพวกเขาเช่น "par1 par2 ... parN"
duDE

@duDE ฉันไม่ต้องการรวมอาร์กิวเมนต์ ฉันต้องการที่pip.cmd arg1 arg2 argNจะกลายเป็นสำหรับการใด ๆpip.exe --proxy="myproxy" arg1 arg2 argN N
Dmitry Grigoryev

@duDE YHO ผิด;)
DavidPostill

คำตอบ:


4

มีสัญกรณ์ที่คล้ายกันหรือวิธีแก้ปัญหาที่เหมาะสมสำหรับเชลล์ Windows หรือไม่?

%*เป็นcmdเทียบเท่า$@ในระบบปฏิบัติการยูนิกซ์

บันทึก:

  • อนุญาตให้ใช้พารามิเตอร์ได้สูงสุด 255 ตัว

ตัวอย่าง (pip.cmd):

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

อาร์กิวเมนต์บรรทัดคำสั่ง (พารามิเตอร์)

%*ในชุดสคริปต์หมายถึงข้อโต้แย้งทั้งหมด (เช่น%1 %2 %3 %4 %5 ...%255)

ที่มา - พารามิเตอร์


อ่านเพิ่มเติม


2

คุณสามารถใช้%*:

@echo off
echo %0
echo %*

การทำเช่นนี้จะทำให้:

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

ที่%0เป็นคำสั่ง / ชื่อโปรแกรมและ%*พารามิเตอร์ทั้งหมด

ดูบทความนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.