我在 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 个日期。
询问内容如下:
- 循环遍历所有名为 - 的文件夹
\F1
- 删除文件夹
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