将命令行参数传递给 Windows 批处理脚本

Dhi*_*mar 10 windows batch command-line-arguments

我需要创建一个 Windows 批处理脚本,我需要在其中传递一些命令行参数。这些参数可能以任何顺序出现,但脚本应根据参数名称正确选取它们。例如:

<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>
Run Code Online (Sandbox Code Playgroud)

可以通过上述两种方式中的任何一种调用脚本,但应正确选取年龄和性别并将其分配给变量。参数可以通过它们之前的开关来标识 - 即 -age , -gender 等。

有人可以给我一个内部识别的例子吗?

Mur*_*nik 10

不幸的是,batch 没有getops那样的内置函数。但是,您可以实现自己的穷人变体:

:GETOPTS
 if /I %~1 == --age set AGE=%2& shift
 if /I %~1 == --gender set GENDER=%2& shift
 shift
if not (%1)==() goto GETOPTS
Run Code Online (Sandbox Code Playgroud)


小智 8

你可以用Powershell来做吗?还是需要批量处理?Powershell 让它变得又好又容易,你只需要在你的脚本顶部添加类似这样的东西,然后你就可以以任何顺序调用每个参数

param (
[string]$Age,
[string]$Gender
)
Run Code Online (Sandbox Code Playgroud)

你可以用批处理来做,但它需要大量的参数检查..这里有一些批处理脚本的链接

http://www.ericphelps.com/batch/samples/arguments.bat.txt

(可能重复)

/sf/ask/365101061/