删除整个树中的文件,但前提是这些文件位于命名的子文件夹中

删除整个树中的文件,但前提是这些文件位于命名的子文件夹中

我想用来del删除大树中特定类型的文件,但前提是它们位于命名的子文件夹中。

例如,对于这些文件:

\test\sample.jpg
\test\fred\pics\sample.jpg
\test\jenny\sample.jpg
\test\fred\pics\sample.jpg

我想从测试文件夹 \test\ 运行一个命令来删除 *.jpg(大概del使用/S开关),但只删除位于名为 的文件夹中的那些\pics

重要的:父文件夹(在此示例中为“jenny”和“fred”)未知。

因此,成功运行后将会留下以下信息:

\test\sample.jpg
\test\jenny\sample.jpg

答案1

需要使用for /r X:\path\test /D %A in (pics.?) do @Del "%~fA\*.jpg"虚拟通配符.?才能使命令起作用。

样例树/F 之前:

> tree /F
└───test
    │   sample.jpg
    ├───fred
    │   └───pics
    │           sample.jpg
    └───jenny
        │   sample.jpg
        └───pics
                sample.jpg

运行 cmd 行后:

> tree /F
└───test
    │   sample.jpg
    ├───fred
    │   └───pics
    └───jenny
        │   sample.jpg
        └───pics

在批处理文件中,你必须将%A->%%A

@Echo off
for /r X:\path\test /d %%A in (pics.?) do Del "%%~fA\*.jpg"

相关内容