找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22603|回复: 6

[文件操作] 批处理计算后删除指定文件,请大家帮忙.

[复制链接]
发表于 2022-4-1 22:33:49 | 显示全部楼层 |阅读模式
求代码...
先谢谢管理员.

附件
链接:https://pan.baidu.com/s/1rA4eMgf7YuvNh6TDoO7m9A
提取码:wvgb

目录结构:
指定一个目录:例如:c:\333  

规范如下
案例1
a b------------------------------------------------------------
3-2案例1(注)_中文_2018年04月15日01时45分_中文_中文_663793_180403_298[忽略].xlsx

案例2
a b------------------------------------------------------------
1-1案例2(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx

案例3
a b------------------------------------------------------------
1-2案例3(注)_中文_2018年04月11日01时45分_中文_中文_663793_180403_298[忽略].xlsx

a=个位数字
b=个位数字

注: b 后面接着是中文(或者字母)

-------------------------------------------

需求:
计算每个文件的ab差值:
a-b>0.5 的数量. 定义为.z  (案例1:3-2>0.5,   z的数量+1)
a-b=0   的数量  定义为.p  (案例2:1-1=0,     p的数量+1)
b-a>0.5 的数量  定义为.k  (案例3:2-1>0.5,   k的数量+1)

逻辑:
如果z的数量大于等于1,同时,k的数量也大于等于1,清空当前文件夹所有.xlsx文件
发表于 2022-4-1 23:02:26 | 显示全部楼层
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. set /a "z=0,p=0,k=0"
  4. for /f "delims=" %%i in ('dir /b *-*.xlsx ^| findstr "^[0-9]-[0-9]"') do (
  5.         set "line=%%i"
  6.         set /a "num=!line:~0,1!0-!line:~2,1!0"
  7.         if !num! gtr 5 (
  8.                 set /a "z+=1"
  9.         ) else (
  10.                 if !num! equ 0 (
  11.                         set /a "p+=1"
  12.                 ) else (
  13.                         if !num! lss 5 set /a "k+=1"
  14.                 )
  15.         )
  16.        
  17. )
  18. if %z% geq 1 if %k% geq 1 echo del *.xlsx
  19. pause&exit
复制代码

评分

参与人数 1技术 +1 收起 理由
iii888iii + 1 感谢感谢

查看全部评分

 楼主| 发表于 2022-4-2 13:14:21 | 显示全部楼层
回复 2# went


    谢谢,刚测试了一下,不会删除案例文件
发表于 2022-4-2 14:26:56 | 显示全部楼层
回复 1# iii888iii
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. set z=0
  5. set p=0
  6. set k=0
  7. for /f "delims=" %%i in ('dir /b /a-d *.xlsx') do (
  8.     set "file=%%i"
  9.     set "X=!file:~0,1!"
  10.     set "Y=!file:~2,1!"
  11.     if !X! gtr !Y! (
  12.         set /a z+=1
  13.     ) else if !X! lss !Y! (
  14.         set /a k+=1
  15.     ) else (
  16.         set /a p+=1
  17.     )
  18. )
  19. if !z! geq 1 (
  20.     if !k! geq 1 (
  21.         del /f /q *.xlsx
  22.     )
  23. )
复制代码
发表于 2022-4-2 14:27:37 | 显示全部楼层
回复 3# iii888iii


    2楼代码倒数第二行里面的echo删掉试试

评分

参与人数 1技术 +1 收起 理由
iii888iii + 1 感谢感谢

查看全部评分

发表于 2022-4-2 14:31:19 | 显示全部楼层
回复 3# iii888iii


   是否有多级目录,你的意思简单点说就是a>b和a<b各至少有一个就删除对吧

  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /ad /b /s') do (
  5. set /a "z=0,k=0"
  6. for /f "delims=" %%x in ('dir /a-d /b "%%~fi\*-*.xlsx" ^| findstr "^[0-9]-[0-9]"') do (
  7. set "n=%%x"
  8. set "a=!n:~0,1!"
  9. set "b=!n:~2,1!"
  10. if !a! gtr !b! set /a "z+=1"
  11. if !a! lss !b! set /a "k+=1"
  12. )
  13. if !z! geq 1 if !k! geq 1 (echo 删除"%%~fi\*.xlsx"&del "%%~fi\*.xlsx")
  14. )                          
  15. echo 按任意键结束&pause
复制代码

评分

参与人数 1技术 +1 收起 理由
iii888iii + 1 感谢感谢感谢感谢

查看全部评分

 楼主| 发表于 2022-4-3 16:01:40 | 显示全部楼层
感谢...大家的支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:55 , Processed in 0.020257 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表