我写了这段代码
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
批处理功能是非常有用的机制。