【发布时间】:2013-06-27 00:21:38
【问题描述】:
编辑:我认为 for 循环正在运行到子目录的子目录中,从每个子目录返回“图标”文件夹并将其作为第一个参数传递。我需要让第一个循环只运行第一组子目录
示例目录结构:
文件\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
【问题讨论】:
-
为什么不尝试将
for-loop嵌套在for-loop中,我认为它会比for-loop更好,嵌套在goto-loop中嵌套在for-loop中。通过在两个循环中的do之后使用( )来做到这一点。 -
/D /R 循环与 /R 递归,因此它在树中运行。另一个 for 循环正在运行以选择文件名 - 它没有做任何其他事情。你看到了什么问题?
-
结果是它适用于所有目录,一旦它完成它就会循环尝试查找不存在的 %CD%\Icon。它运行了大约十次试图找到不存在的东西!
标签: windows for-loop batch-file cmd goto