Board logo

标题: %~ti扩展问题,想得到得到文件的创建时间 [打印本页]

作者: lokeymei     时间: 2008-11-30 18:01    标题: %~ti扩展问题,想得到得到文件的创建时间

小弟进来不久,今天遇到这个问题,求大哥大姐们给个链接或解决方案::
问题如下,ppp

  Quote:
@echo off&setlocal enabledelayedexpansion
set /p dd=请问你要查看哪天之后的文件:
echo 请等待……
echo =======================================
echo 新增的文件有:
set drv=c d e f g h i j k
for %%a in (%drv%) do (
for /f "delims=" %%i in ('dir /s/b/a-d %%a:\ 2^>nul') do (
set "rq=%%~ti"
set "rq=!rq:~0,10!
set "rq=!rq:-=!"
if "!rq!" gtr "!dd!"   (
echo %%i
)
)
)
pause

本意是要取得新增文件,输入一个时间,然后获取在这个时间后的创建的文件,我要得到的是创建的时间,然而经过粗略的测试发现%~ti得到的是文件修改的时间,问题就出来了怎么得到文件的创建时间呢?
想了下  dir /tc  发现我办不到,特来求助
我是新人,看了“新人须知”,不知我这个提问方式和内容有无不妥,不妥之处还望大家指出
经初步修改发现自己的错误很多,请高人指点一二

  Quote:
@echo off&setlocal enabledelayedexpansion
set /p dd=请问你要查看哪天之后的文件:
echo 请等待……
echo =======================================
echo 新增的文件有:
set drv=c d e f g h i j k
for %%a in (%drv%) do (
for /f "tokens=1,4 delims= " %%i in ('"dir /tc /a-d %%a:\" ^|findstr /v ^"字节 目录^" 2^>nul') do (
set  "rq=%%i"
if  not "!rq!"=="" if "!rq!" gtr "!dd!" (
echo %%j
)
)
)
pause

还是不行…………

[ Last edited by lokeymei on 2008-12-1 at 12:58 ]
作者: lxmxn     时间: 2008-12-1 02:04
应该可以的,不过有点粗心哦。。。

  Quote:
if  not "!rq!"=="" if "!rq!" gtr "!d!" (


作者: lokeymei     时间: 2008-12-1 12:56    标题: re 1#

谢谢啊,确实粗心,但错误仍然存在,,555
我修改了下
作者: 不得不爱     时间: 2008-12-1 21:04
@echo off&setlocal enabledelayedexpansion
set /p dd=请问你要查看哪天之后的文件:
echo 请等待……
echo =======================================
echo 新增的文件有:
set drv=c d e f g h i j k
for %%a in (%drv%) do (
for /f "skip=4 tokens=1,4" %%i in ('dir/tc /a-d %%a:\ 2^>nul^|findstr /v "字节" 2^>nul') do (
if "%%i" gtr "%dd%" echo %%j
))
pause
作者: lokeymei     时间: 2008-12-1 23:08    标题: re 4#

谢谢这位大哥同情我啊,等了很久,都没人回复我,
不过大哥把我的本意改了,我要全盘搜索,dir /tc/a-d 是不够的,
哎,,,,我自己摸索了半天,加上我老师的的修改问题已经圆满解决,谢谢各位的关注,经过修改,代码如下

  Quote:
@echo off&setlocal enabledelayedexpansion
set /p dd=请问你要查看哪天之后的文件(如20081129):
echo 请等待……
echo =========================================================================
echo 新增的文件有:
set drv=c d e f g h i j k
for %%a in (%drv%) do (
for /f "skip=2 tokens=1,4" %%a in ('dir /s/a-d/tc "%%a:\"^|findstr /v ^"目录^"^|findstr /v ^"字节^" 2^>nul 3^>nul') do (
set "riqi=%%a"
if "!riqi:~4,1!"=="-" (
set "riqi=!riqi:-=!"
if "!riqi!" GTR "%dd%" (
echo ---- %%a
echo. "%%~FSb"
)
)
)
)
pause

问题已经解决
作者: HAT     时间: 2008-12-2 10:01    标题: Re 5楼

建议尽快学会代码缩进。
这样的代码风格,再过几天,连你自己都看不懂是啥意思了。
作者: 不得不爱     时间: 2008-12-2 11:13
首先说明我没有改变你的意图,我只是改了1楼下面的代码,再者你4楼的代码错误比较多,如在2个for里面都设置了同1个变量%%a 这容易引起错误,而且你没有屏蔽dir命令的错误提示,最好该成下面的代码:
@echo off&setlocal enabledelayedexpansion
set /p dd=请问你要查看哪天之后的文件(如20081129):
echo 请等待……
echo =========================================================================
echo 新增的文件有:
set drv=c d e f g h i j k
for %%d in (%drv%) do (
for /f "tokens=1,4" %%a in ('dir /s/a-d/tc %%d:\ 2^>nul^|findstr /v "字节"') do (
set "riqi=%%a"
if "!riqi:~4,1!"=="-" (
set "riqi=!riqi:-=!"
if "!riqi!" GTR "%dd%" (
echo ---- %%a
echo. "%%~FSb"
)
)
)
)
pause
另外在排出字节的同时也排出了目录, 因此可以不用排出目录吧?
作者: lokeymei     时间: 2008-12-2 17:32    标题: re all

谢谢大家,,我会尽力学的,,,,,谢谢每一楼的的兄弟,,,
楼上的建议和观点经测试完全正确,,,呵呵,,
奥,,
忘了个事,,,版主说代码要简化,要格式化,但是我是新手,不知道怎么去简化,,麻烦大哥给个示范,谢谢了

[ Last edited by lokeymei on 2008-12-2 at 18:02 ]