标题: [文件操作] 求助,批处理怎么取指定日期之间的文件夹名称?急 [打印本页]
作者: duanxu3 时间: 2018-12-25 11:28 标题: 求助,批处理怎么取指定日期之间的文件夹名称?急
求教大佬,新人一枚,
老板有个需求,让取指定日期 到某个日期之间的文件夹,并且排序。求教怎么解决,我试过很多方法,都不行,实在没办法了。刚学bat,懂得很少。虚心请教
作者: duanxu3 时间: 2018-12-25 11:34
顶上去 求教
作者: Batcher 时间: 2018-12-25 14:48
试过这几个代码没?
http://bbs.bathome.net/thread-12669-1-1.html
作者: Batcher 时间: 2018-12-25 15:19
文件夹名称就是日期吗?是哪种格式呢:
yyyymmdd
yyyy-mm-dd
...
作者: duanxu3 时间: 2018-12-25 15:28
本帖最后由 duanxu3 于 2018-12-25 15:58 编辑
回复 4# Batcher
作者: duanxu3 时间: 2018-12-25 15:57
本帖最后由 duanxu3 于 2018-12-25 16:10 编辑
回复 4# Batcher
谢谢大佬,我写出来了,但是返回的文件排序方式按照升序的排序方式,但是我想让他按照降序排序,返回文件夹排序顺序的是20181219,20181220.其实我想返回20181220,20181219- @echo off&setlocal enabledelayedexpansion
-
- set 起始日期=2018-12-27
- set 终止日期=2018-12-14
- set 日期=2018-11-19
-
- call:date2i "%起始日期%" ans
- call:date2i "%终止日期%" anc
- set ZYDQpath=\\172.30.40.2\3dversion\X64\
- for /f "skip=2 tokens=1-3*" %%a in ('dir/a-h/tc/4^|find "<DIR>"') do (
- call:date2ii "%%a" num
- if !num! gtr !anc! if !num! lss !ans! (echo %%~d) else echo no
-
- )
- pause
- ::exit
-
- :date2i <yyyy-mm-dd> <ret>
- setlocal&set tp=%~1
- for /f "tokens=1-3delims=-" %%a in ("%tp:-0=-%")do set/a y=%%a,m=%%b,d=%%c
- set/a "m=(m+9)%%12,y-=m/10+1900,i=365*y+y/4+(m*153+2)/5+d-1"
- endlocal&set %2=%i%&goto:eof
- )
-
- :date2ii <yyyy/mm/dd> <ret>
- setlocal&set tp=%~1
- for /f "tokens=1-3delims=/" %%a in ("%tp:/0=/%")do set/a y=%%a,m=%%b,d=%%c
- set/a "m=(m+9)%%12,y-=m/10+1900,i=365*y+y/4+(m*153+2)/5+d-1"
- endlocal&set %2=%i%&goto:eof
- )
复制代码
作者: Batcher 时间: 2018-12-25 16:24
回复 6# duanxu3
试试这样可以吗 dir /a-h /tc /o-d
作者: duanxu3 时间: 2018-12-25 17:47
回复 7# Batcher
这样不行,没有返回结果了
作者: Batcher 时间: 2018-12-25 19:19
回复 8# duanxu3
那确实挺奇怪的,/o-d 只是指定排序方式而已。你打开一个CMD窗口执行,看看是dir没有得到正确格式的值,还是dir+find得到了错误的结果
作者: WHY 时间: 2018-12-26 13:38
本帖最后由 WHY 于 2018-12-26 16:59 编辑
- @echo off
- set "sDate=20180101"
- set "eDate=20181227"
- set "myPath=%~p0"
-
- 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 (
- if "%%i" GTR "%sDate%000000" if "%%i" LSS "%eDate%999999" (
- for /f "delims=" %%k in ("%%k") do echo;%%i %%~fk
- )
- )
- pause
复制代码
作者: WHY 时间: 2018-12-26 13:41
本帖最后由 WHY 于 2018-12-26 17:00 编辑
- @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"
复制代码
作者: duanxu3 时间: 2018-12-27 15:37
回复 10# WHY
谢谢大佬
作者: duanxu3 时间: 2018-12-27 15:40
回复 10# WHY
大佬求问指定目录怎么写?比如我要指定某个目录 c:\test
作者: ivor 时间: 2018-12-27 16:59
本帖最后由 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 复制代码
现在有问题还是用powershell解决比较快,代码又健壮。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |