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

[文件操作] 求助,批处理怎么取指定日期之间的文件夹名称?急

求教大佬,新人一枚,
老板有个需求,让取指定日期 到某个日期之间的文件夹,并且排序。求教怎么解决,我试过很多方法,都不行,实在没办法了。刚学bat,懂得很少。虚心请教

顶上去 求教

TOP

试过这几个代码没?
http://bbs.bathome.net/thread-12669-1-1.html
1

评分人数

    • smss: 乐于助人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

文件夹名称就是日期吗?是哪种格式呢:
yyyymmdd
yyyy-mm-dd
...
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 duanxu3 于 2018-12-25 15:58 编辑

回复 4# Batcher

TOP

本帖最后由 duanxu3 于 2018-12-25 16:10 编辑

回复 4# Batcher


    谢谢大佬,我写出来了,但是返回的文件排序方式按照升序的排序方式,但是我想让他按照降序排序,返回文件夹排序顺序的是20181219,20181220.其实我想返回20181220,20181219
  1. @echo off&setlocal enabledelayedexpansion
  2. set 起始日期=2018-12-27
  3. set 终止日期=2018-12-14
  4. set 日期=2018-11-19
  5. call:date2i  "%起始日期%" ans
  6. call:date2i  "%终止日期%" anc
  7. set ZYDQpath=\\172.30.40.2\3dversion\X64\
  8. for /f "skip=2 tokens=1-3*" %%a in ('dir/a-h/tc/4^|find "<DIR>"') do (
  9. call:date2ii "%%a" num
  10. if !num! gtr !anc! if !num! lss !ans! (echo %%~d) else echo no
  11. )
  12. pause
  13. ::exit
  14. :date2i <yyyy-mm-dd> <ret>
  15. setlocal&set tp=%~1
  16. for /f "tokens=1-3delims=-" %%a in ("%tp:-0=-%")do set/a y=%%a,m=%%b,d=%%c
  17. set/a "m=(m+9)%%12,y-=m/10+1900,i=365*y+y/4+(m*153+2)/5+d-1"
  18. endlocal&set %2=%i%&goto:eof
  19. )
  20. :date2ii <yyyy/mm/dd> <ret>
  21. setlocal&set tp=%~1
  22. for /f "tokens=1-3delims=/" %%a in ("%tp:/0=/%")do set/a y=%%a,m=%%b,d=%%c
  23. set/a "m=(m+9)%%12,y-=m/10+1900,i=365*y+y/4+(m*153+2)/5+d-1"
  24. endlocal&set %2=%i%&goto:eof
  25. )
复制代码

TOP

回复 6# duanxu3


    试试这样可以吗 dir /a-h /tc /o-d
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher


    这样不行,没有返回结果了

TOP

回复 8# duanxu3


    那确实挺奇怪的,/o-d 只是指定排序方式而已。你打开一个CMD窗口执行,看看是dir没有得到正确格式的值,还是dir+find得到了错误的结果
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 WHY 于 2018-12-26 16:59 编辑
  1. @echo off
  2. set "sDate=20180101"
  3. set "eDate=20181227"
  4. set "myPath=%~p0"
  5. for /f "tokens=1,2*delims=. " %%i in ('WMIC FSDir where "Drive='%~d0' and Path='%myPath:\=\\%'" get CreationDate^,Name^|findstr "^[0-9]"^|sort /r') do (
  6.     if "%%i" GTR "%sDate%000000" if "%%i" LSS "%eDate%999999" (
  7.         for /f "delims=" %%k in ("%%k") do echo;%%i %%~fk
  8.     )
  9. )
  10. pause
复制代码

TOP

本帖最后由 WHY 于 2018-12-26 17:00 编辑
  1. @echo off
  2. set "sDate=20180101"
  3. set "eDate=20181227"
  4. PowerShell "dir -Force | ?{$d=$_.CreationTime.ToString('yyyyMMdd');$_ -is [IO.DirectoryInfo] -and $d -ge '%sDate%' -and $d -le '%eDate%'} | sort -Des CreationTime | select FullName"
复制代码

TOP

回复 10# WHY


    谢谢大佬

TOP

回复 10# WHY


    大佬求问指定目录怎么写?比如我要指定某个目录 c:\test

TOP

本帖最后由 ivor 于 2018-12-27 17:04 编辑
WHY 发表于 2018-12-26 13:41@echo off

set "sDate=20180101"
set "eDate=20181227"
PowerShell "dir -Force | ?{$d=$_.CreationTime.ToString('yyyyMMdd');$_ -is [IO.DirectoryInfo] -and $d -ge '%sDate%' -and $d -le '%eDate%'} | sort -Des CreationTime | select FullName"


回复 13# duanxu3
  1. dir -Force -Path c:\test
复制代码
现在有问题还是用powershell解决比较快,代码又健壮。

TOP

返回列表