1

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

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

@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
)
4

3 回答 3

2

尝试这个:

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

%cd%不会被列出来。

于 2013-06-26T10:54:29.453 回答
0

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

FOR /R "%CD%" %%d IN (ZZZZZ) do @(SET "D=%%~d" & SET "D=!D:\ZZZZZ=!" & IF NOT "!D!"=="%CD%" @ECHO !D!)
于 2013-06-26T10:52:38.760 回答
0

嗯..有趣的场景。

尝试在http://ss64.com/nt/forfiles.htmlforfiles查看命令。但是使用命令这是我能想到的最好的解决方案。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

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

这对我有用,希望它有所帮助。

你的莫娜。

于 2013-06-26T10:24:48.813 回答