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

[文件操作] 批处理怎么删除旧版本

文件夹下有软件生成的各个版本文件如下
      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
....

回复 1# 阿一呐法
未测试,代码另存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2* delims=." %%i in ('dir /b /a-d^|findstr /e "[0-9]"') do (
  4.     if "%%i.%%j"=="!fn!" (
  5.         if %%k gtr !n! (
  6.             set n=%%k
  7.             del "!fn!.!m!"
  8.         ) else (
  9.             del "%%i.%%j.%%k"
  10.         )
  11.     ) else (
  12.         set n=%%k
  13.     )
  14.     set fn=%%i.%%j
  15.     set m=%%k
  16. )
复制代码

TOP

  1. @echo off
  2. Setlocal Enabledelayedexpansion
  3. for /f "delims==" %%a in ('set _del_ID_ 2^>nul') do set "%%a="
  4. for /f %%a in ('dir /b /a-d^|findstr /er "\.[0-9][0-9]*$"') do (
  5. set n=%%~xa
  6. set /a n=!n:~1!
  7. if defined _del_ID_%%~na (
  8. set /a n1=_del_ID_%%~na
  9. if !n! LSS !n1! ( set /a n1=n ) else ( set /a "_del_ID_%%~na=!n!" )
  10. del /f /q "%%~na.!n1!"
  11. ) else (
  12. set /a "_del_ID_%%~na=!n!"
  13. )
  14. )
  15. endlocal
复制代码

TOP

回复 2# qixiaobin0715


    谢谢,测试没得问题,

TOP

  1. PowerShell "dir *.* | ?{$_.Extension -match '\.\d+$'} | sort{1*$_.Extension.Trim('.')} -Desc | group{$_.BaseName} | forEach{$_.Group | select -Skip 1 | del -Force}"
复制代码

TOP

返回列表