在批处理文件的所有子文件夹中运行命令

在批处理文件的所有子文件夹中运行命令

我有一个如下所示的批处理文件:

IF EXIST icon.ico (
    attrib -S -H -R desktop.ini
    echo f | xcopy /H /Y "%~dp0desktop.ini.txt" desktop.ini
    attrib +S +H +A desktop.ini
)

这完全满足了我的需求。我的问题是如何让它在所有子文件夹中运行?

答案1

如何在批处理文件的所有子目录中运行命令?

您可以用于for /r此。

使用以下批处理文件:

for /r "starting_directory" %%a in (.) do (
  pushd %%a
  if exist icon.ico (
    attrib -s -h -r desktop.ini
    echo f | xcopy /h /y "%~dp0desktop.ini.txt" desktop.ini
    attrib +s +h +a desktop.ini
    ) 
  popd 
  )

for /r – 循环遍历文件(递归子文件夹)

句法

FOR /R [[drive:]path] %%parameter IN (set) DO command

钥匙

drive:path :文件所在的文件夹树。

set :一组或多组文件。必须使用通配符。如果 (set) 是句点字符 (.),则 FOR 将循环遍历每个文件夹。

command :要执行的命令,包括任何命令行参数。

%%parameter`:可替换参数:在批处理文件中使用 %%G(在命令行上 %G)

来源对于/r- 循环遍历文件(递归子文件夹)。


进一步阅读

相关内容