用于循环批处理文件



如何将批处理文件复制到子目录中,运行它,然后删除批处理文件?

我正在处理一个批处理文件,它将自动更改它所在文件夹的文件夹图标。如下所示:

@ECHO OFF
attrib +s "%CD%"
set ICODIR=%CD%Icon
for %%F in ("%ICODIR%"*.ico) do set ICO=%%~nxF
set ICOINI=Desktop.ini
IF EXIST Desktop.ini (
    attrib -s -h %ICOINI%
)
echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%>>%ICOINI%
echo InfoTip=%ICO:~0,-4%>>%ICOINI%
attrib -a +s +h %ICOINI%
Pause

这是可行的,在发现许多问题后,它不会创建文件夹图标,直到删除该目录中的文件。

我一直在尝试一个for循环,它将列出所有子目录并存储它们的名称。尽管它首先列出了根目录。如何使其跳过根目录?代码如下:

@ECHO OFF
for /R /D "delims=" %%d IN (%CD%) do echo %%~nd
Pause

编辑:为什么文件只在最后一个文件夹中制作?

for /D /R "%cd%" %%d IN (*) do (
    set something=%%~nd 
    echo TEST>%something%Desktop.txt
)

试试这个:

for /D /R "%cd%" %%d IN (*) do echo %%~d

%cd%不会被列出。

嗯。。有趣的场景。

请尝试在上查看forfiles命令http://ss64.com/nt/forfiles.html。然而,使用for命令,这是我能想到的最好的解决方案。

:loop
set /a count+=1
for /f "tokens=%count% delims=" %%a in ("%CD%") do (echo %%a > 
output.txt)
if %count% == 8 exit
goto :loop

请注意,这不是最好的答案,但它是有效的。此实例将通过递增if检查,从驱动器号最多检查中的7个目录。

这对我很有效,希望能有所帮助。

你的莫娜。

对于第二部分,我发现添加IF语句可以过滤掉搜索的根。你的例子对我根本不起作用,所以我不得不修改一下/R将搜索中的当前目录(而不是%CD%)前置到循环变量中,所以我不得不去掉一些sentinel值。我认为不太可能找到名称中带有"ZZZZZ"的文件,但您的文件系统可能需要一个不同的哨兵。

FOR /R "%CD%" %%d IN (ZZZZZ) do @(SET "D=%%~d" & SET "D=!D:ZZZZZ=!" & IF NOT "!D!"=="%CD%" @ECHO !D!)

最新更新