2013-06-27 97 views
0

編輯:我認爲for循環運行到子目錄的子目錄中,從每個子目錄返回'Icon'文件夾並將其作爲第一個參數傳遞。我需要做的第一循環僅通過第一組子目錄運行For循環發瘋!嵌套for循環GOTO

示例目錄結構:

文件\ 01 \圖標 文件\ 02 \圖標 文件\ 03 \圖標

所以貫穿01,然後是02,然後是03,然後是01 \ Icon,02 \ Icon,03 \ Icon。它需要停在第一級。

for循環出錯了!你能幫我修好嗎?

似乎嵌套for循環運行faaar太多次,它只是需要運行一次才能找到* .ico的文件名。不知道是否有更快的方法來找到* .ico。我不知道有什麼方法可以在沒有for循環的情況下返回圖標文件名。

@ECHO OFF 

set ICOINI=Desktop.ini 

for /D /R "%cd%" %%d IN (*) do call :Write_File %%~nd 

goto :End_File 

:Write_File 

attrib +s "%CD%\%1" 
echo Set Attributes for: %cd%\%1 

for %%F in ("%CD%\%1\Icon\*.ico") do set ICO=%%~nxF 

IF EXIST "%CD%\%1\%ICOINI%" attrib -a -s -h "%1\%ICOINI%" 

echo [.ShellClassInfo]>"%CD%\%1\%ICOINI%" 
echo IconResource="%CD:~2%\%1\%ICO%">>"%CD%\%1\%ICOINI%" 
echo InfoTip="%ICO:~0,-4%">>"%CD%\%1\%ICOINI%" 

attrib -a +s +h "%CD%\%1\%ICOINI%" 

goto :EOF 

:End_File 

Pause 
+0

爲什麼不ü嘗試'換loop'嵌套在'換loop',我認爲這將更好地工作,然後一個'換loop',嵌套在'goto-loop'嵌套到'for-loop'中。通過在兩個循環中的'do'之後使用'()'做到這一點。 – Monacraft

+0

/D/R循環用/ R遞歸,因此它在樹中運行。另一個for循環正在運行以選擇一個文件名 - 它沒有做其他任何事情。你看到什麼問題? – foxidrive

+0

結果是它適用於所有的目錄,一旦它試圖找到%CD%\ Icon不存在的循環。它試圖找到一些不在那裏的東西,大約經歷了十次。 –

回答

2

試試這個:

set "ICO=" 
for %%F in ("%CD%\%~1\Icon\*.ico") do if not defined ICO set "ICO=%%~nxF"