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


    又看了一遍 findstr 的正则,没有发现它能解决楼主的问题,能否把你的代码放出来学习一下?

TOP

本帖最后由 yu2n 于 2017-2-25 19:42 编辑

回复 16# GNU


    解决什么问题?要我为楼主写软件就免了,我写不了这样的软件。

findstr 的主要功能是匹配字符串。
我前面的发的正则代码不能匹配么?我测试了楼主的那几个例子,findstr 起到了它应有的作用,它找出了那些带日期的文件名。
当然,我不指望一行 findstr 就搞定计算日期范围/删除文件这些功能吧,微软可没有为 findstr 加这些功能。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 17# yu2n


你可能没有理解楼主的需求,他的文件名里面都有日期,不需要用findstr查找。
他这个问题的难点在于日期字符串在文件名里面的位置不固定,findstr的正则不足以解决这个难点。

TOP

回复 18# GNU


   
我没看错的话,楼主举的第一个文件名例子是  abc0116-0205.xls 。
这个里面没有日期吧,难道不应该用 findstr 把这些不相干的文件排除么?
  1. @rem --
  2. @rem win10 x64
  3. @rem --
  4. @echo off & cls
  5. pushd "%~dp0"
  6. echo.>"abc0116-0205.xls"
  7. echo.>"2017-02-13 221047.bak"
  8. echo.>"ef0123609-0123315.xls"
  9. echo.>"2017-02-13 083946.bak"
  10. echo.>"2017-02-13 083946.bak"
  11. echo.>"bak-2009-12-25.bak"
  12. echo 当前文件列表:
  13. dir /a /b
  14. echo.
  15. echo 匹配格式:*yyyy-mm-dd hhmmss.*
  16. dir /a /b | findstr /r "^.*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].*[0-9][0-9][0-9][0-9][0-9][0-9]\..*$"
  17. echo.
  18. echo 匹配格式:*yyyy-mm-dd.*
  19. dir /a /b | findstr /rx "^.*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\..*$"
  20. echo.
  21. pause
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 19# yu2n


abc0116-0205.xls 2017-02-13 221047
或者
ef0123609-0123315.xls 2017-02-13 083946
就是文件的名字前部分长度什么的没有规律,后部分都 2017-02-13 083946 这样,年-月-日 时分秒

我是这样理解的,他顶楼说的是2个文件而不是4个文件。

TOP

回复  yu2n



我是这样理解的,他顶楼说的是2个文件而不是4个文件。
GNU 发表于 2017-2-25 20:53



    楼上正解!我所有的的文件名字都是以xxxx-xx-xx xxxxxx 作为文件名的结尾, 即4位年,两位日和月,加一个空格后面是小时分钟和秒各两位,这是固定格式,但是文件 名的前半部分是没有任何规律的字符个数不确定

TOP

回复 21# zbgxg


    但是你15楼给的测试用例不是以xxxx-xx-xx xxxxxx 作为文件名的结尾,“副本”神马的怎么也出来了?

TOP

返回列表