2

好的,假设我们有一个名为 start.cmd 的文件

@echo off

set value=1
for /D %%a in (%*) do (
    echo %%a
)

start.cmd 被调用

start.cmd ^%value^% ^%anothervalue^%

当然,for 循环会占用 %1 和 %2,以此类推。

我的问题是:

编辑:如何在另一个值中转义一个值?

4

1 回答 1

1

我猜测:

您只想在 for 循环中扩展变量,而不是之前。

对于您的案例,您只需要添加 a CALL,因为它会第二次启动解析器,因此它可以%value%在它回显之前扩展它。

@echo off

set value=1
for /D %%a in (%*) do (
    call echo %%a
)

但更好的是在这里使用延迟扩展

@echo off
setlocal EnableDelayedExpansion
set value=1
for /D %%a in (%*) do (
    echo %%a
)

然后你可以开始你的批次

start.cmd !value! !anothervalue!

这是因为延迟扩展是在解析器进行百分比扩展之后完成的,因此%*先扩展为!value! !anothervalue!,然后再扩展为1 xyz

于 2013-11-13T07:52:19.800 回答