Board logo

标题: [文件操作] BAT脚本批量删除文件名中含相同字符串的文件 [打印本页]

作者: lnvi_li    时间: 2023-11-17 11:00     标题: BAT脚本批量删除文件名中含相同字符串的文件

1、文件名前24个字符串是自动加的时间撮2、因为网络问题,时间撮会重复加,并生成多个文件
3、示例文件名称中,第二和第三个文件是需要删除的
4、该类文件存在于目录下的多个下级目录中

文件名示例:
2022年07月24日11点41分16_234_鲁公2023年 KPl.xlsx
2022年07月24日11点41分16_234_2022年07月24日11点41分16_234_鲁公2023年 KPl.xlsx
2022年07月24日11点41分16_234_2022年07月24日11点41分16_234_2022年07月24日11点41分16_234_鲁公2023年 KPl.xlsx


求助大神帮助
作者: qixiaobin0715    时间: 2023-11-17 12:11

备份好源文件,批处理放在要处理的文件目录下,慎用:
  1. del /s /q *_*_*_*_*.xls
复制代码

作者: ShowCode    时间: 2023-11-17 13:28

回复 1# lnvi_li
  1. @echo off
  2. cd /d "%~dp0"
  3. del /f /q /s *年*月*日*点*分*_*年*月*日*点*分*
  4. pause
复制代码

作者: hfxiang    时间: 2023-11-17 17:31

本帖最后由 hfxiang 于 2023-11-18 06:42 编辑

回复 1# lnvi_li
可借用第3方工具gawk(http://bcn.bathome.net/tool/5.1.0/gawk.exe)辅助处理,实现方式如下:
  1. @echo off
  2. cd /d "%~dp0"
  3. dir *.xlsx /s/a-d/b|gawk "BEGIN{FS=OFS=\"\134\"}{split($NF,t,/_[0-9]+_/,m);f=t[1];for(i=2;i in t;i++)if(t[i]!=t[1])f=f m[i-1] t[i];if(f in c){if(!($0 in a))printf(\"@del \042\045s\042\n\",$0)}else{c[f];if($NF!=f){s=$0;$NF=f;printf(\"@move \057Y \042\045s\042 \042\045s\042\n\",s,$0);a[$0]}}}"|cmd.exe
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2