Batch file 在FOR中扩展(延迟的)环境变量

Batch file 在FOR中扩展(延迟的)环境变量,batch-file,Batch File,为什么呢!多伊特!不在FOR循环内扩展到其值 setlocal EnableDelayedExpansion FOR /F "delims=" %%I in ('dir /b /ad /s') do ( pushd "%%~I" set doit=yes if not exist *.f* ( if not exist *.c* set doit=no ) if "!doit!" == "yes" FOR /F "delims="

为什么呢!多伊特!不在FOR循环内扩展到其值

setlocal EnableDelayedExpansion
FOR /F "delims=" %%I in ('dir /b /ad /s') do (
     pushd "%%~I"
     set doit=yes
     if not exist *.f* (
       if not exist *.c* set doit=no
     )

     if "!doit!" == "yes" FOR /F "delims=" %%G IN ('DIR *.f* *.c* /B /A:-D /O:D') DO SET NewestFile=%%G
     popd
)
当我运行这个时,我看到了!多伊特!未扩展:

如果“!doit!”==“是”对于/F“delims=“%G IN('DIR.F.c/B/A:-D/O:D'),请设置新文件=%G


延迟展开是在命令回显后完成的,因此您无法在那里看到展开的值;要检查值,请执行
echo/!多伊特(暂时)…通过将
doit
设置为nothing或
a值
(任意值),您可以获得更好的里程数
如果定义了doit…
则使用运行时值
doit
,因此可能不需要使用
delayedexpansion
。延迟扩展是在命令回显后完成的,因此您无法在那里看到扩展值;要检查值,请执行
echo/!多伊特(暂时)…通过将
doit
设置为nothing或
a值
(任意值),您可以获得更好的里程数
如果定义了doit…
则使用运行时值
doit
,因此可能不需要使用
delayedexpansion