![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 22:22 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何判断文件修改时间 并执行自解压文件 |
| 可打印版本 1,243 / 14 |
| 第1楼 benpaonow | 发表于 2008-06-03 19:32 |
| 新手上路 发帖 7 积分 16 | |
|
如何判断文件修改时间 并执行自解压文件 如何判断一个文件的修改时间,比如查找c:\windows\syste32\drivers\*.sys的修改时间,1 如果在某天几点之前修改的,就执行别的目录的一个自解压文件,2 如果这个文件是在某天之后修改的则不执行任何文件
这个应该怎么写呀 求高手指教 [ Last edited by benpaonow on 2008-6-3 at 07:35 PM ] |
|
| 第2楼 tvzml | 发表于 2008-06-03 21:38 |
| 初级用户 发帖 67 积分 157 | |
|
@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 |
|
| 第3楼 quya | 发表于 2008-06-03 21:45 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
他只要修改时间,所以能不用 WMIC (貌似第三方程序?)就不用。
提供一个思路,用FOR语句以及FOR语句中的增强替换变量 %~tI (I 是变量) 至于怎么编, 说实话,我暂时不会,请其他人照我思路编编看, 让我也学习一下,谢谢。 |
|
| 第4楼 bat-zw | 发表于 2008-06-03 21:52 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
假设这个时间点是2008年5月14日7点
|
|
| 第5楼 benpaonow | 发表于 2008-06-03 21:57 |
| 新手上路 发帖 7 积分 16 | |
|
我比较菜 看不明白 请详细说明 主要是想仔细学习批处理
我就是想让程序判断一下比如c:\windows\syste32\drivers\amsint.sys的修改时间,如果这个时间是在特定的一天之前修改的 则运行共享服务器上的一个自解压文件更新这个文件,如果特定的这天之后修改的就无须运行任何命令 [ Last edited by benpaonow on 2008-6-3 at 10:01 PM ] |
|
| 第6楼 bat-zw | 发表于 2008-06-03 22:04 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
特定的一天,楼主不会说是在系统时间一天前吧,那又将麻烦几倍了。
[ Last edited by zw19750516 on 2008-6-3 at 10:07 PM ] |
|
| 第7楼 benpaonow | 发表于 2008-06-03 22:10 |
| 新手上路 发帖 7 积分 16 | |
|
呵呵 不好意思 我这个文件的修改时间是200805261653 这个时间以前的需要运行自解压文件,如果是这个时间或以后的就不需要
|
|
| 第8楼 benpaonow | 发表于 2008-06-03 22:14 |
| 新手上路 发帖 7 积分 16 | |
|
wmic后面的语句貌似是wmi服务的语句吧,和SQL的很像
|
|
| 第9楼 bat-zw | 发表于 2008-06-03 22:16 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by benpaonow at 2008-6-3 22:10: 那楼主自己将我上面的代码改一下,同时在"........."中填上完整路径+你要运行的命令就可以了啊。 |
|
| 第10楼 tvzml | 发表于 2008-06-03 22:29 |
| 初级用户 发帖 67 积分 157 | |
|
要这么麻烦的话,还不如核对MD5,文件大小呢
|
|
| 第11楼 benpaonow | 发表于 2008-06-03 22:30 |
| 新手上路 发帖 7 积分 16 | |
Originally posted by zw19750516 at 2008-6-3 10:16 PM: 不能用呀 不知道是不是我改的有问题 还是怎么回事 能加我QQ聊吗 852275278 |
|
| 第12楼 benpaonow | 发表于 2008-06-03 22:30 |
| 新手上路 发帖 7 积分 16 | |
Originally posted by tvzml at 2008-6-3 10:29 PM: 文件大小101K |
|
| 第13楼 quya | 发表于 2008-06-03 22:33 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by zw19750516 at 2008-6-3 09:52 PM: |
|
| 第14楼 HAT | 发表于 2008-06-03 23:31 |
| 版主 发帖 5,017 积分 9,023 | |
Originally posted by benpaonow at 2008-6-3 10:30 PM: 把你修改以后的代码贴出来看看 |
|
| 第15楼 benpaonow | 发表于 2008-06-04 00:17 |
| 新手上路 发帖 7 积分 16 | |
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" |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |