标题: [文件操作] 批处理计算后删除指定文件,请大家帮忙. [打印本页]
作者: iii888iii 时间: 2022-4-1 22:33 标题: 批处理计算后删除指定文件,请大家帮忙.
求代码...
先谢谢管理员.
附件
链接: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文件
作者: went 时间: 2022-4-1 23:02
- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set /a "z=0,p=0,k=0"
- for /f "delims=" %%i in ('dir /b *-*.xlsx ^| findstr "^[0-9]-[0-9]"') do (
- set "line=%%i"
- set /a "num=!line:~0,1!0-!line:~2,1!0"
- if !num! gtr 5 (
- set /a "z+=1"
- ) else (
- if !num! equ 0 (
- set /a "p+=1"
- ) else (
- if !num! lss 5 set /a "k+=1"
- )
- )
-
- )
- if %z% geq 1 if %k% geq 1 echo del *.xlsx
- pause&exit
复制代码
作者: iii888iii 时间: 2022-4-2 13:14
回复 2# went
谢谢,刚测试了一下,不会删除案例文件
作者: Batcher 时间: 2022-4-2 14:26
回复 1# iii888iii - @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set z=0
- set p=0
- set k=0
- for /f "delims=" %%i in ('dir /b /a-d *.xlsx') do (
- set "file=%%i"
- set "X=!file:~0,1!"
- set "Y=!file:~2,1!"
- if !X! gtr !Y! (
- set /a z+=1
- ) else if !X! lss !Y! (
- set /a k+=1
- ) else (
- set /a p+=1
- )
- )
- if !z! geq 1 (
- if !k! geq 1 (
- del /f /q *.xlsx
- )
- )
复制代码
作者: Batcher 时间: 2022-4-2 14:27
回复 3# iii888iii
2楼代码倒数第二行里面的echo删掉试试
作者: buyiyang 时间: 2022-4-2 14:31
回复 3# iii888iii
是否有多级目录,你的意思简单点说就是a>b和a<b各至少有一个就删除对吧- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /ad /b /s') do (
- set /a "z=0,k=0"
- for /f "delims=" %%x in ('dir /a-d /b "%%~fi\*-*.xlsx" ^| findstr "^[0-9]-[0-9]"') do (
- set "n=%%x"
- set "a=!n:~0,1!"
- set "b=!n:~2,1!"
- if !a! gtr !b! set /a "z+=1"
- if !a! lss !b! set /a "k+=1"
- )
- if !z! geq 1 if !k! geq 1 (echo 删除"%%~fi\*.xlsx"&del "%%~fi\*.xlsx")
- )
- echo 按任意键结束&pause
复制代码
作者: iii888iii 时间: 2022-4-3 16:01
感谢...大家的支持
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |