Board logo

标题: [文本处理] [已解决]批处理如何找出最新版本的文件? [打印本页]

作者: jb2002520    时间: 2016-3-2 11:00     标题: [已解决]批处理如何找出最新版本的文件?

某一个文件夹里,有很多的多版本的文件,文件名是一样的,但是,在中间的版本号不一样,用来表示此文件的修改版本
会产生大量的前期版本文件,求一个一次性操作删除旧版本文件的BAT。如下:

黑色框起来的只要保存ST2.574.001DL_D_ST3112-1-XC温度控制器总成电路图.PDF
红色框起来的只要保存 ST2.574.001MX_E_ST3112-1-XC温度控制器总成明细表.pdf
别的版本区分开。最好是能分2个文件夹。不行就把老版本删除。
作者: jb2002520    时间: 2016-3-2 11:19

没有人吗?大神们快出来,本人菜鸟,实在不会做
作者: flyinnet9    时间: 2016-3-2 11:25

本帖最后由 flyinnet9 于 2016-3-2 11:26 编辑
  1. @echo off
  2. md 最新版本
  3. for /f "tokens=1-2* delims=_" %%a in ('dir /a-d /b /o-n *.pdf') do (
  4.   if not defined %%a move "%%a_%%b_%%c" .\最新版本\ >nul
  5.   set %%a=1
  6. )
复制代码

作者: jb2002520    时间: 2016-3-2 12:03

回复 3# flyinnet9
谢谢大神回复。基本满足要求。但是ST1.107.001DL_A_电路图1、ST1.107.001DL_A_电路图2、ST1.107.001DL_A_电路图3是3个不同的文件。不是不同版本。因此应该有3个最新版本。
作者: jb2002520    时间: 2016-3-2 12:07

回复 3# flyinnet9
ST1.107.001DL_A_电路图1、ST1.107.001DL_B_电路图1这2个文件最新版本是ST1.107.001DL_B_电路图1  您给出的程序可以做到。
作者: jb2002520    时间: 2016-3-2 12:31

大神都吃饭去了
作者: codegay    时间: 2016-3-2 13:26

  1. """
  2. python取出当前目录下最新修改的文件.py
  3. http://bbs.bathome.net/thread-39535-1-1.html
  4. 2016年3月2日 11:44:35 codegay
  5. 参考资料 python glob模块 通配符
  6. http://blog.sina.com.cn/s/blog_5ee725480101bf94.html
  7. """
  8. import os
  9. import glob
  10. import shutil
  11. #os.mkdir("电路图")
  12. fs=glob.glob("*总成电路图.pdf")
  13. 电路图={r:os.stat(r).st_mtime for r in fs}
  14. ns=max(电路图)
  15. print("最新",max(电路图))
  16. shutil.copy(ns,"./电路图/")
  17. fs=glob.glob("*总成明细表.pdf")
  18. 明细表={r:os.stat(r).st_mtime for r in fs}
  19. print("最新",max(明细表))
复制代码

作者: jb2002520    时间: 2016-3-2 13:52

回复 7# codegay


    没有反应
作者: flyinnet9    时间: 2016-3-2 16:41

本帖最后由 flyinnet9 于 2016-3-2 16:43 编辑
  1. @echo off
  2. md 最新版本
  3. for /f "tokens=1-2* delims=_" %%a in ('dir /a-d /b /o-n *.pdf') do (
  4.   if not defined %%a (
  5.     move %%a_%%b_%%c .\最新版本\ >nul
  6.     set %%a=1
  7.     set %%c=1
  8.   ) else (
  9.     if not defined %%c (
  10.       move %%a_%%b_%%c .\最新版本\ >nul
  11.       set %%c=1
  12.     )
  13.   )
  14. )
复制代码

作者: jb2002520    时间: 2016-3-2 17:09

回复 9# flyinnet9

谢谢大神,你的答案完全满足我。
作者: gawk    时间: 2016-3-3 13:47

回复 8# jb2002520


    7楼是Python代码,要想在Windows里面运行,需要先搭建好Python环境。
作者: codegay    时间: 2016-3-3 14:56

回复 11# gawk


    哈哈。我代码有错误。max(dict)是取不到字典最大值的。我还没改好呢。
作者: WHY    时间: 2016-3-3 23:09

借9#代码一用
  1. @echo off
  2. md 最新版本
  3. for /f "tokens=1-2* delims=_" %%a in ('dir /a-d /b /o-n *.pdf') do (
  4.   if not defined _%%a_%%~nc (
  5.     move "%%a_%%b_%%c" .\最新版本\ >nul
  6.     set _%%a_%%~nc=1
  7.   )
  8. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2