如何使用cmd批量删除WINDOWS中当前目录下2级文件名不包含字符串的文件

如何使用cmd批量删除WINDOWS中当前目录下2级文件名不包含字符串的文件

我在 Windows 上有一个如下文件夹结构:

\---Root 
    \---L1
        \---L2
            \---L3
                +---2022_09_28
                |   +---F1
                |   |       DELETE_D1F1_1.csv
                |   |       DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_1.csv
                |   |       DONT_DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_3.csv
                |   |       
                |   \---F2
                |           ab_F2_1.csv
                |           yid_F2_2.csv
                |           
                +---2022_09_29
                |   +---F1
                |   |       DELETE_D1F1_1.csv
                |   |       DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_1.csv
                |   |       DONT_DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_3.csv
                |   |       
                |   \---F2
                |           amd_F2_2.csv
                |           fgd_F2_1.csv

请注意,树结构复制\F1\F2 为每个日历日期创建文件夹,为了便于说明,这里我仅显示了 2 个日期。

询问内容如下:

  1. 循环遍历所有名为 - 的文件夹\F1
  2. 删除文件夹DONT_DELETE中不以开头的文件\F1

预期结果是仅有的以 开头的文件DELETE将被删除。

答案1

我建议不要费力地编写批处理命令,而是使用即时搜索实用程序,例如 voidtools 的一切,我认为这是我最有用的工具之一。

在索引您的磁盘之后,您可以使用以下表达式搜索您的文件:
files: "\path\root" \F1 !DONT_DELETE*

验证显示的列表,如果正确,按 Ctrl+A然后按 Del删除。

答案2

@echo off

2>nul cd /d "z:\root" || exit /b

for /f usebackq^ delims^= %%i in (`
     where /r . *.csv ^| findstr /r .[0-9]\\\F1\\\DELETE.*.csv
    `)do echo\del /q /a: "%%~i"

  • 或者...
@echo off

2>nul cd /d "z:\root" || exit /b

for /f usebackq^ delims^= %%i in (`
     where /r . DELETE*_*.csv^|findstr /e .*[0-9][0-9]_[0-9][0-9]\\F1\\.*\.csv
    `)do echo\ del /q /a: "%%~i"

您可以测试它,如果看起来不错,请删除它echo\以有效地删除您的文件。


For循环命令结果:

del /q /a: "z:\root\L1\L2\L3\2022_09_28\F1\DELETE_D1F1_1.csv"
del /q /a: "z:\root\L1\L2\L3\2022_09_28\F1\DELETE_D1F1_2.csv"
del /q /a: "z:\root\L1\L2\L3\2022_09_29\F1\DELETE_D1F1_1.csv"
del /q /a: "z:\root\L1\L2\L3\2022_09_29\F1\DELETE_D1F1_2.csv"
del /q /a: "z:\root\L1\L2\L3\2022_09_30\F1\DELETE_D1F1_1.csv"
del /q /a: "z:\root\L1\L2\L3\2022_09_30\F1\DELETE_D1F1_2.csv"

在 Windows 中你将拥有如下文件夹结构:

\---Root
    \---L1
        \---L2
            \---L3
                +---2022_09_28
                |   +---F1
                |   |       DONT_DELETE_D1F1_1.csv
                |   |       DONT_DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_3.csv
                |   |       
                |   \---F2
                |           ab_F2_1.csv
                |           yid_F2_2.csv
                |           
                +---2022_09_29
                |   +---F1
                |   |       DONT_DELETE_D1F1_1.csv
                |   |       DONT_DELETE_D1F1_2.csv
                |   |       DONT_DELETE_D1F1_3.csv
                |   |       
                |   \---F2
                |           amd_F2_2.csv
                |           fgd_F2_1.csv

相关内容