好的,假设我们有一个名为 start.cmd 的文件
@echo off
set value=1
for /D %%a in (%*) do (
echo %%a
)
start.cmd 被调用
start.cmd ^%value^% ^%anothervalue^%
当然,for 循环会占用 %1 和 %2,以此类推。
我的问题是:
编辑:如何在另一个值中转义一个值?
好的,假设我们有一个名为 start.cmd 的文件
@echo off
set value=1
for /D %%a in (%*) do (
echo %%a
)
start.cmd 被调用
start.cmd ^%value^% ^%anothervalue^%
当然,for 循环会占用 %1 和 %2,以此类推。
我的问题是:
编辑:如何在另一个值中转义一个值?
我猜测:
您只想在 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