中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 19:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » %~ti扩展问题,想得到得到文件的创建时间 查看 1,114 回复 7
楼 主 %~ti扩展问题,想得到得到文件的创建时间 发表于 2008-11-30 18:01 ·  中国 湖南 长沙 电信
新手上路
积分 18
发帖 17
注册 2008-11-07 22:13
17年会员
UID 130325
性别 男
状态 离线
小弟进来不久,今天遇到这个问题,求大哥大姐们给个链接或解决方案::
问题如下,ppp


@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 发现我办不到,特来求助
我是新人,看了“新人须知”,不知我这个提问方式和内容有无不妥,不妥之处还望大家指出
经初步修改发现自己的错误很多,请高人指点一二

@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 ]
2 发表于 2008-12-01 02:04 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
应该可以的,不过有点粗心哦。。。

if not "!rq!"=="" if "!rq!" gtr "!d!" (
3 re 1# 发表于 2008-12-01 12:56 ·  中国 湖南 长沙 电信
新手上路
积分 18
发帖 17
注册 2008-11-07 22:13
17年会员
UID 130325
性别 男
状态 离线
谢谢啊,确实粗心,但错误仍然存在,,555
我修改了下
4 发表于 2008-12-01 21:04 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
@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
5 re 4# 发表于 2008-12-01 23:08 ·  中国 湖南 长沙 电信
新手上路
积分 18
发帖 17
注册 2008-11-07 22:13
17年会员
UID 130325
性别 男
状态 离线
谢谢这位大哥同情我啊,等了很久,都没人回复我,
不过大哥把我的本意改了,我要全盘搜索,dir /tc/a-d 是不够的,
哎,,,,我自己摸索了半天,加上我老师的的修改问题已经圆满解决,谢谢各位的关注,经过修改,代码如下



@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


问题已经解决
6 Re 5楼 发表于 2008-12-02 10:01 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
建议尽快学会代码缩进。
这样的代码风格,再过几天,连你自己都看不懂是啥意思了。
7 发表于 2008-12-02 11:13 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
首先说明我没有改变你的意图,我只是改了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

另外在排出字节的同时也排出了目录, 因此可以不用排出目录吧?
8 re all 发表于 2008-12-02 17:32 ·  中国 湖南 长沙 电信
新手上路
积分 18
发帖 17
注册 2008-11-07 22:13
17年会员
UID 130325
性别 男
状态 离线
谢谢大家,,我会尽力学的,,,,,谢谢每一楼的的兄弟,,,
楼上的建议和观点经测试完全正确,,,呵呵,,
奥,,
忘了个事,,,版主说代码要简化,要格式化,但是我是新手,不知道怎么去简化,,麻烦大哥给个示范,谢谢了

[ Last edited by lokeymei on 2008-12-2 at 18:02 ]
论坛跳转: