0

编辑:我认为 for 循环正在运行到子目录的子目录中,从每个子目录返回“Icon”文件夹并将其作为第一个参数传递。我需要让第一个循环只通过第一组子目录

示例目录结构:

文件\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
4

1 回答 1

2

try this:

set "ICO="
for %%F in ("%CD%\%~1\Icon\*.ico") do if not defined ICO set "ICO=%%~nxF"
于 2013-06-27T13:50:50.983 回答