如何使用外部for循环的迭代器进行延迟扩展?

时间:2014-12-03 18:20:10

标签: batch-file for-loop delay expansion

我似乎无法找到,如何在内部循环中使用外部循环的迭代器(在批处理文件中):

setlocal enabledelayedexpansion
REM for every folder in %mainfolder%
for /D %%s in (%mainfolder%\*) DO (
REM for every file in the subfolder %s
    for %%f in (%%s\*) do(
        some things with the files in that subfolder
    )
)

我必须在哪里放置感叹号,以便我可以在内循环中实际使用%s?现在,我得到了错误

  

" do(" kann syntaktisch nicht an dieser stelle verarbeitet werden   C:\ fakepath> for%f in(%s *)do(

这意味着翻译为" do("无法在此位置进行语法处理。

我很确定问题实际上与延迟扩展有关(实际上,没有使用它)

1 个答案:

答案 0 :(得分:1)

要纠正错误,必须在do子句和代码块的左括号之间添加一个空格。

%%s可替换参数范围/可见性是for循环内的任何位置,用于初始化它。因此,它可以直接在内循环中使用。