中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何判断文件修改时间 并执行自解压文件
作者:
标题: 如何判断文件修改时间 并执行自解压文件 上一主题 | 下一主题
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『楼 主』:  如何判断文件修改时间 并执行自解压文件

如何判断一个文件的修改时间,比如查找c:\windows\syste32\drivers\*.sys的修改时间,1 如果在某天几点之前修改的,就执行别的目录的一个自解压文件,2 如果这个文件是在某天之后修改的则不执行任何文件
这个应该怎么写呀
求高手指教

[ Last edited by benpaonow on 2008-6-3 at 07:35 PM ]

2008-6-3 19:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tvzml
初级用户





积分 157
发帖 67
注册 2007-5-13
状态 离线
『第 2 楼』:  

@echo off
for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="C:\\WINDOWS\\NOTEPAD.EXE" get CreationDate^,LastAccessed^,LastModified') do set a=%%a & set b=%%b & set c=%%c
echo 文件名称:   %WINDIR%\NOTEPAD.EXE
echo 创建时间:   %a:~0,4%年%a:~4,2%月%a:~6,2%日, %a:~8,2%:%a:~10,2%:%a:~12,2%
echo 修改时间:   %c:~0,4%年%c:~4,2%月%c:~6,2%日, %c:~8,2%:%c:~10,2%:%c:~12,2%
echo 访问时间:   %b:~0,4%年%b:~4,2%月%b:~6,2%日, %b:~8,2%:%b:~10,2%:%b:~12,2%
pause

   此帖被 +1 点积分    点击查看详情   
评分人:【 benpaonow 分数: +1  时间:2008-6-3 23:01


2008-6-3 21:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 3 楼』:  

他只要修改时间,所以能不用 WMIC (貌似第三方程序?)就不用。

提供一个思路,用FOR语句以及FOR语句中的增强替换变量 %~tI (I 是变量)

至于怎么编, 说实话,我暂时不会,请其他人照我思路编编看, 让我也学习一下,谢谢。



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-3 21:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  

假设这个时间点是2008年5月14日7点
@echo off
for /f "delims=" %%i in ('dir /s /a-d /b c:\windows\syste32\drivers\*.sys') do call :lp %%~ti
pause>&goto :eof
for /f "tokens=1-5 delims=/:\- " %%i in ("%1") do if "%%i%%j%%k%%l%%m" lss "200805140700" start "" ".........."  


   此帖被 +3 点积分    点击查看详情   
评分人:【 quya 分数: +2  时间:2008-6-3 22:33
评分人:【 benpaonow 分数: +1  时间:2008-6-3 23:01




批处理之家新域名:www.bathome.net
2008-6-3 21:52
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 5 楼』:  

我比较菜 看不明白 请详细说明 主要是想仔细学习批处理
我就是想让程序判断一下比如c:\windows\syste32\drivers\amsint.sys的修改时间,如果这个时间是在特定的一天之前修改的 则运行共享服务器上的一个自解压文件更新这个文件,如果特定的这天之后修改的就无须运行任何命令

[ Last edited by benpaonow on 2008-6-3 at 10:01 PM ]

2008-6-3 21:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  

特定的一天,楼主不会说是在系统时间一天前吧,那又将麻烦几倍了。

[ Last edited by zw19750516 on 2008-6-3 at 10:07 PM ]



批处理之家新域名:www.bathome.net
2008-6-3 22:04
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 7 楼』:  

呵呵 不好意思 我这个文件的修改时间是200805261653 这个时间以前的需要运行自解压文件,如果是这个时间或以后的就不需要

2008-6-3 22:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 8 楼』:  

wmic后面的语句貌似是wmi服务的语句吧,和SQL的很像

2008-6-3 22:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by benpaonow at 2008-6-3 22:10:
呵呵 不好意思 我这个文件的修改时间是200805261653 这个时间以前的需要运行自解压文件,如果是这个时间或以后的就不需要

那楼主自己将我上面的代码改一下,同时在"........."中填上完整路径+你要运行的命令就可以了啊。



批处理之家新域名:www.bathome.net
2008-6-3 22:16
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
tvzml
初级用户





积分 157
发帖 67
注册 2007-5-13
状态 离线
『第 10 楼』:  

要这么麻烦的话,还不如核对MD5,文件大小呢

2008-6-3 22:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-3 10:16 PM:

那楼主自己将我上面的代码改一下,同时在"........."中填上完整路径+你要运行的命令就可以了啊。

不能用呀 不知道是不是我改的有问题 还是怎么回事
能加我QQ聊吗 852275278

2008-6-3 22:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by tvzml at 2008-6-3 10:29 PM:
要这么麻烦的话,还不如核对MD5,文件大小呢

文件大小101K

2008-6-3 22:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-3 09:52 PM:
假设这个时间点是2008年5月14日7点
[code]
@echo off
for /f "delims=" %%i in ('dir /s /a-d /b c:\windows\syste32\drivers\*.sys') do call :lp %%~ti
pause>&goto :eof
fo ...

虽然暂时看不懂,但我想办法肯定是对的,因为我看到了我想象中的关键字。我加你分。



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-3 22:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by benpaonow at 2008-6-3 10:30 PM:

不能用呀 不知道是不是我改的有问题 还是怎么回事
能加我QQ聊吗 852275278

把你修改以后的代码贴出来看看



2008-6-3 23:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
benpaonow
新手上路





积分 16
发帖 7
注册 2008-6-3
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by HAT at 2008-6-3 11:31 PM:

把你修改以后的代码贴出来看看

@echo off
for /f "delims=" %%i in ('dir /s /a-d /b c:\windows\syste32\drivers\fakedisk.sys') do call :lp %%~ti
pause>&goto :eof
for /f "tokens=1-5 delims=/:\- " %%i in ("%1") do if "%%i%%j%%k%%l%%m" lss "200805261653" start "\\192.168.1.252\save\Update.exe"

2008-6-4 00:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: