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

我做了这个代码


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%


有任何想法吗?


拉莫斯之舞
浏览 481回答 3
3回答

慕村225694

在for循环和括号范围内设置和使用变量有两种方法。setlocal enabledelayedexpansion看到setlocal /?求助。这仅适用于XP / 2000或更新版本的Windows。然后使用!variable!而不是%variable%在循环内...使用批量转到标签创建批处理功能:Label。例:for /F "tokens=*" %%a in ('type %FileName%') do call :Foo %%agoto End:Fooset z=%1echo %z%echo %1goto :eof:End批处理函数是非常有用的机制。

智慧大石

我坚持了好几个小时。这是我注册命令行变量的循环。示例:Register.bat / param1:value1 / param2:value2做什么,循环所有命令行参数,并设置变量与值的正确名称。之后,你可以使用set value =!param1!设置value2 =!param2!无论序列如何给出。(所谓的命名参数)。注意!<>!而不是%<>%。SETLOCAL ENABLEDELAYEDEXPANSIONFOR %%P IN (%*) DO (&nbsp; &nbsp; call :processParam %%P)goto:End:processParam [%1 - param]&nbsp; &nbsp; @echo "processparam : %1"&nbsp; &nbsp; FOR /F "tokens=1,2 delims=:" %%G IN ("%1") DO (&nbsp; &nbsp; &nbsp; &nbsp; @echo a,b %%G %%H&nbsp; &nbsp; &nbsp; &nbsp; set nameWithSlash=%%G&nbsp; &nbsp; &nbsp; &nbsp; set name=!nameWithSlash:~1!&nbsp; &nbsp; &nbsp; &nbsp; @echo n=!name!&nbsp; &nbsp; &nbsp; &nbsp; set value=%%H&nbsp; &nbsp; &nbsp; &nbsp; set !name!=!value!&nbsp; &nbsp; )&nbsp; &nbsp; goto :eof:End&nbsp; &nbsp;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP