3 回答
TA贡献1880条经验 获得超4个赞
在for循环和括号范围内设置和使用变量有两种方法。
setlocal enabledelayedexpansion看到setlocal /?求助。这仅适用于XP / 2000或更新版本的Windows。然后使用!variable!而不是%variable%在循环内...
使用批量转到标签创建批处理功能: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贡献1946条经验 获得超3个赞
我坚持了好几个小时。这是我注册命令行变量的循环。示例: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 关注
- 477 浏览
添加回答
举报