2014-12-03 26 views
0

我似乎無法找到答案,我怎麼能內部循環中使用外循環的迭代器(在一個批處理文件):如何使用外部for循環的迭代器進行延遲擴展?

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?現在,我得到的錯誤

「做(」 卡恩syntaktisch nicht的dieser顆星verarbeitet werden C:在\ fakepath>爲%F(%S *)做(

這意味着翻譯是「做(」不能在這個位置語法處理。

我敢肯定,這個問題實際上已經做的延遲擴展(實際上,與不使用它)

+2

您錯過了'do'和左括號之間的空格。在內部循環中使用'%% s',....使用它。不需要延遲擴展 – 2014-12-03 18:29:27

+0

哦,哇,我沒有看到這個我自己!非常感謝你的快速答案。你認爲我應該刪除這個問題,因爲它的愚蠢? – lucidbrot 2014-12-03 18:32:17

+2

*「我沒有失敗,我剛剛發現了10000種不起作用的方法。」* Thomas A. Edison。沒有愚蠢的問題。 – 2014-12-03 19:22:09

回答

1

要糾正錯誤,有必要在do子句和代碼塊的左括號之間添加一個空格。

%%s可替換的參數範圍/可見性位於for循環的任何位置,用於初始化它。所以,它可以直接在內部循環中使用。