batch-file - 如何删除特定位置包含字符串的文件?
问题描述
如何使用批处理文件删除文件名中特定位置具有特定字符串的文件?
我想删除由最终用户输入的包含特定字符串的文件。
例如,我想2019
从文件名如下所示的几个目录中删除所有包含的文件:
FILE 2019.03.09.FILE.2019.XXX
我有这个代码:
@ECHO off
TITLE REMOVE FILES
@ECHO:
SET /p _FileNumber= Enter file number You want to remove:
del /q /s "C:\Directory1\*%_FileNumber%.*"
del /q /s "C:\Directory2\*%_FileNumber%.*"
PAUSE
我输入特定的数字,它可以工作,但也会删除所有名称为年份的文件。
我可以在扩展字段之前添加一些可以从数字中获取变量的东西吗?
解决方案
如果您提供的所有文件都是 format FILE yyyy.mm.dd.FILE.yyyy.ext
,则使用findstr
正则表达式:
@echo off
title REMOVE FILES
echo:
set /p "_FileNumber=Enter file number You want to remove: "
for /F "delims= eol=" %%A IN ('dir /S /B /A-D "*" ^| findstr /RC:"FILE %_FileNumber%\.[0-9][0-9]\.[0-9][0-9]\.FILE\.%_FileNumber%\.ext"') do del /F /A "%%~fA"
pause
这将确保删除所有包含您提到的格式的用户输入的文件。
正则表达式解释:
/R
使其在findstr
\
是转义字符.
是通配符;它表示任何字符,因此\
您需要一个真正的点来对其进行转义。[0-9]
表示仅当其中一个字符存在时才匹配[]
,如果任何字符1
,2
,3
,4
,5
,6
,7
,8
,9
存在。
有关使用的命令的更多信息,请输入cmd.exe
:
for /?
set /?
title /?
echo /?
findstr /?
解释接受的正则表达式pause /?
dir /?
del /?
推荐阅读
- bash - Sed 将下划线字符串转换为 CamelCase 在数字上失败
- microsoft-teams - 无法通过 Microsoft 团队消息卡中的“HttpPOST”操作发布到目标 URL
- ios - NSSecureCoding 在简单地创建 SCNNode 时抛出
- node.js - Angular 8中子组件与父组件之间的通信
- azure-devops - BizTalk 部署 2016 通过管道
- mysql - 如何让 ASP.NET 角色使用 MySQL?
- beautifulsoup - 标签包含句号时如何导航汤数据结构
- hive - Pyspark:将数据帧插入分区配置单元表
- flutter - 如何更改底部导航栏颤动的颜色?
- kubernetes - GCP 云作曲家节点在一天中间歇性地进入 crashloopbackoff 状态