中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-16 03:06
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何判断文件修改时间 并执行自解压文件 查看 1,197 回复 14
楼 主 如何判断文件修改时间 并执行自解压文件 发表于 2008-06-03 19:32 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
如何判断一个文件的修改时间,比如查找c:\windows\syste32\drivers\*.sys的修改时间,1 如果在某天几点之前修改的,就执行别的目录的一个自解压文件,2 如果这个文件是在某天之后修改的则不执行任何文件
这个应该怎么写呀
求高手指教

[ Last edited by benpaonow on 2008-6-3 at 07:35 PM ]
2 发表于 2008-06-03 21:38 ·  中国 浙江 嘉兴 电信
初级用户
★★
积分 157
发帖 67
注册 2007-05-13 11:03
UID 88378
性别 男
状态 离线
@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-06-03 23:01
3 发表于 2008-06-03 21:45 ·  中国 江苏 苏州 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
UID 881
性别 男
来自 江苏
状态 离线
他只要修改时间,所以能不用 WMIC (貌似第三方程序?)就不用。

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

至于怎么编, 说实话,我暂时不会,请其他人照我思路编编看, 让我也学习一下,谢谢。
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
4 发表于 2008-06-03 21:52 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
假设这个时间点是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 "" ".........."
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
quya +2 2008-06-03 22:33
benpaonow +1 2008-06-03 23:01
批处理之家新域名:www.bathome.net
5 发表于 2008-06-03 21:57 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
我比较菜 看不明白 请详细说明 主要是想仔细学习批处理
我就是想让程序判断一下比如c:\windows\syste32\drivers\amsint.sys的修改时间,如果这个时间是在特定的一天之前修改的 则运行共享服务器上的一个自解压文件更新这个文件,如果特定的这天之后修改的就无须运行任何命令

[ Last edited by benpaonow on 2008-6-3 at 10:01 PM ]
6 发表于 2008-06-03 22:04 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
特定的一天,楼主不会说是在系统时间一天前吧,那又将麻烦几倍了。

[ Last edited by zw19750516 on 2008-6-3 at 10:07 PM ]
批处理之家新域名:www.bathome.net
7 发表于 2008-06-03 22:10 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
呵呵 不好意思 我这个文件的修改时间是200805261653 这个时间以前的需要运行自解压文件,如果是这个时间或以后的就不需要
8 发表于 2008-06-03 22:14 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
wmic后面的语句貌似是wmi服务的语句吧,和SQL的很像
9 发表于 2008-06-03 22:16 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
Originally posted by benpaonow at 2008-6-3 22:10:
呵呵 不好意思 我这个文件的修改时间是200805261653 这个时间以前的需要运行自解压文件,如果是这个时间或以后的就不需要

那楼主自己将我上面的代码改一下,同时在"........."中填上完整路径+你要运行的命令就可以了啊。
批处理之家新域名:www.bathome.net
10 发表于 2008-06-03 22:29 ·  中国 浙江 嘉兴 电信
初级用户
★★
积分 157
发帖 67
注册 2007-05-13 11:03
UID 88378
性别 男
状态 离线
要这么麻烦的话,还不如核对MD5,文件大小呢
11 发表于 2008-06-03 22:30 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
Originally posted by zw19750516 at 2008-6-3 10:16 PM:

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

不能用呀 不知道是不是我改的有问题 还是怎么回事
能加我QQ聊吗 852275278
12 发表于 2008-06-03 22:30 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
Originally posted by tvzml at 2008-6-3 10:29 PM:
要这么麻烦的话,还不如核对MD5,文件大小呢

文件大小101K
13 发表于 2008-06-03 22:33 ·  中国 江苏 苏州 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
UID 881
性别 男
来自 江苏
状态 离线
Originally posted by zw19750516 at 2008-6-3 09:52 PM:
假设这个时间点是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
fo ...


虽然暂时看不懂,但我想办法肯定是对的,因为我看到了我想象中的关键字。我加你分。
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
14 发表于 2008-06-03 23:31 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
Originally posted by benpaonow at 2008-6-3 10:30 PM:

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

把你修改以后的代码贴出来看看
15 发表于 2008-06-04 00:17 ·  中国 山东 青岛 联通
新手上路
积分 16
发帖 7
注册 2008-06-03 19:02
UID 120465
性别 男
状态 离线
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"
论坛跳转: