【发布时间】:2016-09-27 07:56:29
【问题描述】:
我想知道是否可以为从另一个脚本接受参数的批处理文件提供更优雅的解决方案。 在这里查看了解决方案:Windows Bat file optional argument parsing,但无法使其工作。
我有 19 个参数传递给批处理文件。第 7 个参数是可选的(来自复选框)。
我有一个具有这种结构的工作代码:
REM arg7 parsing
set LOGFILE=%7
if not "%LOGFILE%" == "LOGFILE" (
set LOGFILE=
) else (
shift /7
)
REM arg8 parsing
set ARG8=%7
if not "%ARG8%" == "ARG8" (
set ARG8=
) else (
shift /7
)
REM arg9 parsing
set ARG9=%7
if not "%ARG9%" == "ARG9" (
set ARG9=
) else (
shift /7
)
对于每个可选参数,依此类推。
但是现在有很多类似的代码行,我觉得它可以以某种方式进行优化。我对批处理脚本不是很熟悉,所以我尝试将参数存储在列表中并尝试应用上述解决方案并没有奏效。
【问题讨论】:
-
你的问题是关于优化很多行,如果你不提供很多行,我们应该如何优化它们。
IF "%7" EQU "LOGFILE" SHIFT /7 -
对于具有不同参数名称的 12 个参数,它是完全相同的行。但是感谢您的评论,我将对其进行编辑以使其更加明显。
-
请不要我还提供了一个与您的示例相同的 sn-p
-
如果不等于“%7”,您的示例不会重置该值。无论如何,我将不得不编写 12 行相同的代码。不是完美的优化 imo。
-
我的例子没有设置值,所以不需要重置它!
IF "%7" EQU "LOGFILE" ((SET LOGFILE=%7) & SHIFT /7)
标签: batch-file parameter-passing