Skip to main content
 首页 » 编程设计

batch-file之如何在 for/F 循环内设置变量

2024年05月22日64www_RR

我编写了这段代码

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% 那样分割变量

有什么想法吗?

请您参考如下方法:

有两种方法可以在 for 循环和括号范围内设置和使用变量。

  1. setlocalenabledelayedexpansion 请参阅 setlocal/? 获取帮助。这仅适用于 XP/2000 或更高版本的 Windows。 然后在循环内使用 !variable! 而不是 %variable%...

  2. 使用批处理转到标签 :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 
    

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