You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两条含findstr的批量删除CMD命令合并为一条?

合并CMD命令实现批量删除含9/10位数字的文件

问题描述

我需要用findstr查找并删除文件名包含9位或10位随机数字(后跟任意扩展名)的文件,测试目录下的文件如下:

ABCD142359865.pdf
EDFGH9658798563.docx
ZdgBE158795832.sql
GHrK147859632.mdb
!!!!!789548796.eml
XGU125965879.jpg

目前我用两条CMD命令实现需求:

FOR /F "delims=" %%A IN ('dir /a-d /b /s "%~dp0" ^| findstr /i /r "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."') DO del /a /q "%%~A"

FOR /F "delims=" %%A IN ('dir /a-d /b /s "%~dp0" ^| findstr /i /r "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."') DO del /a /q "%%~A"

这两条命令可以正常工作,但能不能合并成一条?

解决方案

可以合并成单条命令,关键是把findstr中分别匹配9位、10位数字的两个正则表达式用|(逻辑或)整合到一起,一次筛选就能覆盖两种情况,无需重复执行循环。

合并后的完整命令:

FOR /F "delims=" %%A IN ('dir /a-d /b /s "%~dp0" ^| findstr /i /r "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."') DO del /a /q "%%~A"

说明

  • findstr的/r参数启用正则模式,|分隔两个匹配规则,分别对应“9位数字+扩展名分隔符”、“10位数字+扩展名分隔符”的文件名特征
  • 保留原命令的遍历逻辑:dir /a-d /b /s递归遍历当前脚本所在目录下的所有文件(排除子目录)
  • 保留原删除逻辑:del /a /q强制删除所有属性的文件(包括隐藏、系统文件),且无需确认弹窗

内容的提问来源于stack exchange,提问作者Jpie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:44:57