为了账号安全,请及时绑定邮箱和手机立即绑定

如何在/ F的循环内设置变量

如何在/ F的循环内设置变量

拉莫斯之舞 2019-09-03 16:45:18
我做了这个代码dir /B /S %RepToRead% > %FileName%for /F "tokens=*" %%a in ('type %FileName%') do (    set z=%%a    echo %z%    echo %%a)echo %%a工作正常,但echo %z%返回“回声禁用”。我需要设置%z%,因为我想将变量拆分为 %z:~7%有任何想法吗?
查看完整描述

3 回答

?
慕村225694

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

批处理函数是非常有用的机制。


查看完整回答
反对 回复 2019-09-03
?
智慧大石

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    


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 477 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信