标题: [文件操作] 批处理怎么删除旧版本 [打印本页]
作者: 阿一呐法 时间: 2022-8-29 09:28 标题: 批处理怎么删除旧版本
文件夹下有软件生成的各个版本文件如下
a.txt.1
a.txt.2
a.txt.3
....
b.txt.4
b.txt.10
b.txt.15
...
c.pro.22
c.pro.50
c.pro.51
....
d.prt.4
d.prt.100
d.prt.201
....
类似的文件,怎么批处理后只保留最高版本,如上面文件执行后只保留的文件如下
a.txt.3
....
b.txt.15
...
c.pro.51
....
d.prt.201
....
作者: qixiaobin0715 时间: 2022-8-29 11:26
回复 1# 阿一呐法
未测试,代码另存为ANSI编码:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2* delims=." %%i in ('dir /b /a-d^|findstr /e "[0-9]"') do (
- if "%%i.%%j"=="!fn!" (
- if %%k gtr !n! (
- set n=%%k
- del "!fn!.!m!"
- ) else (
- del "%%i.%%j.%%k"
- )
- ) else (
- set n=%%k
- )
- set fn=%%i.%%j
- set m=%%k
- )
复制代码
作者: hfxiang 时间: 2022-8-29 16:00
- @echo off
- Setlocal Enabledelayedexpansion
- for /f "delims==" %%a in ('set _del_ID_ 2^>nul') do set "%%a="
- for /f %%a in ('dir /b /a-d^|findstr /er "\.[0-9][0-9]*$"') do (
- set n=%%~xa
- set /a n=!n:~1!
- if defined _del_ID_%%~na (
- set /a n1=_del_ID_%%~na
- if !n! LSS !n1! ( set /a n1=n ) else ( set /a "_del_ID_%%~na=!n!" )
- del /f /q "%%~na.!n1!"
- ) else (
- set /a "_del_ID_%%~na=!n!"
- )
- )
- endlocal
复制代码
作者: 阿一呐法 时间: 2022-8-29 18:12
回复 2# qixiaobin0715
谢谢,测试没得问题,
作者: WHY 时间: 2022-8-29 18:21
- PowerShell "dir *.* | ?{$_.Extension -match '\.\d+$'} | sort{1*$_.Extension.Trim('.')} -Desc | group{$_.BaseName} | forEach{$_.Group | select -Skip 1 | del -Force}"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |