标题: [文件操作] 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
备份好源文件,批处理放在要处理的文件目录下,慎用:复制代码
作者: ShowCode 时间: 2023-11-17 13:28
回复 1# lnvi_li - @echo off
- cd /d "%~dp0"
- del /f /q /s *年*月*日*点*分*_*年*月*日*点*分*
- 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)辅助处理,实现方式如下:- @echo off
- cd /d "%~dp0"
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |