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

Spo*_*ice 2 batch batch-file

我有一个看起来像这样的批处理文件:

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
)
Run Code Online (Sandbox Code Playgroud)

这非常适合我的需要。我的问题是如何在所有子文件夹中运行它?

Dav*_*ill 5

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

您可以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 
  )
Run Code Online (Sandbox Code Playgroud)

for /r - 循环文件(递归子文件夹)

句法

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

钥匙

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

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

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

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

/r 的来源- 循环文件(递归子文件夹)。


进一步阅读