3 回答
TA贡献1780条经验 获得超1个赞
在for循环和括号范围内,有两种方法可以设置和使用变量。
setlocal enabledelayedexpansion看到setlocal /?求助。这仅适用于XP / 2000或更高版本的Windows。然后使用!variable!而不是%variable%循环内...
使用批处理goto标签创建批处理功能:Label。
例:
for /F "tokens=*" %%a in ('type %FileName%') do call :Foo %%a
goto End
:Foo
set z=%1
echo %z%
echo %1
goto :eof
:End
批处理功能是非常有用的机制。
TA贡献1812条经验 获得超5个赞
我为此奋斗了很多小时。这是我注册命令行变量的循环。示例:Register.bat / param1:value1 / param2:value2
它的作用是循环所有命令行参数,并使用正确的名称将变量设置为值。
之后,您可以只使用set value =!param1 !!设置value2 =!param2!
无论给定参数的顺序如何。(所谓的命名参数)。请注意!<> !,而不是%<>%。
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%P IN (%*) DO (
call :processParam %%P
)
goto:End
:processParam [%1 - param]
@echo "processparam : %1"
FOR /F "tokens=1,2 delims=:" %%G IN ("%1") DO (
@echo a,b %%G %%H
set nameWithSlash=%%G
set name=!nameWithSlash:~1!
@echo n=!name!
set value=%%H
set !name!=!value!
)
goto :eof
:End
- 3 回答
- 0 关注
- 613 浏览
添加回答
举报