我写了这段代码

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循环和括号范围内,有两种方法可以设置和使用变量。

  • 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
    

    批处理功能是非常有用的机制。
  • 10-05 19:05
    查看更多