[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

求代码...
先谢谢管理员.

附件
链接: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文件

  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. if %z% geq 1 if %k% geq 1 echo del *.xlsx
  18. pause&exit
复制代码
1

评分人数

TOP

回复 2# went


    谢谢,刚测试了一下,不会删除案例文件

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# iii888iii


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

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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

评分人数

TOP

感谢...大家的支持

TOP

返回列表