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

标签 batch-file cmd

我编写了这段代码

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
    

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

关于batch-file - 如何在 for/F 循环内设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805187/

相关文章:

windows - Windows 中命令 cd/d %~dp0 是什么意思

windows - 为什么即使设置了这个批处理变量也永远不会改变?

java - 使用intellij IDEA的代码库通过windows批处理脚本制作自动jar

windows - 使用 IF 批量过滤多个结果

windows - 有没有办法为 "DIR"命令转义空格

Windows批处理For循环将空字符串拖到最后

batch-file - 根据日期将 N 个文件保存在目录中的批处理文件

batch-file - 如何将 if 语句与 WMIC 一起使用

python - 从 python 打开 .bat

windows - cmake add_subdirectory 错误仅适用于 cmake 命令行,但不适用于 Windows 上的 cmake-gui(在驱动器号的根目录下 check out 源)