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

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

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

<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>

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

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

答案1

不幸的是,批处理没有getops像这样的内置函数确实如此。但是,你可以实现你自己的穷人版本:

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

答案2

你能用 Powershell 来做吗?还是需要批处理?Powershell 让这一切变得简单而方便,你只需要在脚本顶部添加类似这样的内容,然后就可以按任意顺序调用每个参数

param (
[string]$Age,
[string]$Gender
)

您可以使用批处理来完成此操作,但这需要进行大量的参数检查。以下是一些可以执行此操作的批处理脚本的链接

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

(可能有重复)

https://stackoverflow.com/questions/5215729/是否有一种方式可以通过名称而不是顺序将参数传递给a-batch-bat-f

相关内容