编辑:我认为for循环正在运行到子目录的子目录中,从每个子目录返回'Icon'文件夹,并将其作为第一个参数传递。我需要让第一个循环只运行第一组子目录
示例目录结构:
文件\ 01 \图标 文件\ 02 \图标 文件\ 03 \图标
所以它通过01,然后是02,然后是03,然后是01 \ Icon,02 \ Icon,03 \ Icon。它需要停在第一级。
for循环出错了!你能帮我解决一下吗?
似乎嵌套的for循环运行次数太多次,只需要运行一次就可以找到* .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 :(得分:2)
试试这个:
set "ICO="
for %%F in ("%CD%\%~1\Icon\*.ico") do if not defined ICO set "ICO=%%~nxF"