中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,如何找出100分钟前修改过的文件呢?
« [1] [2] »
作者:
标题: 求助,如何找出100分钟前修改过的文件呢? 上一主题 | 下一主题
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by wfy150 at 2008-5-31 06:33 PM:
问下这个set/a !变量!中的"!"是怎么用的?

搜索 变量延迟详解



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-5-31 18:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hyu029
新手上路





积分 14
发帖 7
注册 2007-12-16
状态 离线
『第 17 楼』:  

学习了

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

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 18 楼』:  我来剖析下这个问题:


    &&这个问题看似简单,实际上复杂的要死,要写出完全通用的代码就必须涉
及到如下问题:
   一、对分的判断,判断当前分减去40是不是小于0,如小于0则应加上60,并
把时减去1;
   二、对时的判断,判断当前时减去1是不是小于0,如小于0则要加24,并把天
减去1;
   三、对日的判断,判断当前天减1是不是等于0,如等于0,则把日设成上月的
最后一天(这里还要对上月的最后一天进行判断是为31还是30还是29还是28),
并将月减1;
   四、对月的判断,判断当前月减1是不是等于0,如等于0,则把月设为12月,
并将年减1;
   五、对年的判断,要判断是不是闰年,是的就要将2月设为29天,不是的将2
月设为28天(闰年标准判断法:能被4整除但不能被100整除以及能被400整除的
年为闰年)。
   如当前时间为2100-03-01 0:00:10要判断起来就是件很麻烦的事!!!


[ Last edited by zw19750516 on 2008-6-1 at 03:12 AM ]



批处理之家新域名:www.bathome.net
2008-6-1 02:57
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 19 楼』:  我给的答案:

代码确实有点吓人,但应该是通用的:
@echo off&setlocal enabledelayedexpansion
set /a y=%date:~,4%,m=100%date:~5,2%%%100,d=100%date:~8,2%%%100,mi=100%time:~3,2%%%100
if "%time:~,1%"=="" (set h=%time:~1,1%) else (set h=%time:~,2%)
set /a a=%y%%%4,b=%y%%%100,c=%y%%%400
if %c% equ 0 (set yun=A) else (if %a% equ 0 if %b% neq 0 set yun=A)
if defined yun (set n=29) else (set n=28)
set /a mi-=40,h-=1
if %mi% lss 0 set /a mi+=60,h-=1
if %h% lss 0 set /a h+=24,d-=1
if %d% equ 0 set /a m-=1&goto lp
:cont
for %%i in (%y% %m%) do if %%i lss 10 (set str=!str!0%%i) else (set str=!str!%%i)
for %%i in (%d% %h% %mi%) do if %%i lss 10 (set var=!var!0%%i) else (set var=!var!%%i)
for /f "tokens=1,2,3,4,5,7 delims=-/: " %%a in ('dir /s /a-d *.*') do (
    if %%a%%b lss %str% (
       echo.%%f
       ) else (
       if %%a%%b equ %str% if %%c%%d%%e lss %var% echo.%%f
    )     
)
pause>nul&goto :eof
:lp
if %m% equ 2 set d=%n%&goto cont
if %m% equ 0 set m=12&set /a y-=1
for %%i in (1 3 5 7 8 10 12) do if %%i equ %m% set d=31&goto cont
for %%i in (4 6 9 11) do if %%i equ %m% set d=30&goto cont
[ Last edited by zw19750516 on 2008-6-1 at 04:48 AM ]



批处理之家新域名:www.bathome.net
2008-6-1 04:38
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 20 楼』:  

也发一个对年月日的判断 欢迎测试
@echo off&set tt=0
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
    for /f "tokens=1-3 delims=:" %%i in ('time/t') do set /a t1=100%%i%%100,t2=100%%j%%100
    set/a t1-=1,t2-=40
    if %t2% lss 0 set/a t2+=60,t1-=1
    if %t1% lss 0 set/a tt+=1,t1+=24
    if %p3% gtr %tt%  goto ppp
:nxt
   set/a p2-=1
   if %p2% equ 0 set/a p1-=1&&set p2=12
   set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
   for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
   if %p3% leq %tt% goto nxt
:ppp
setlocal enabledelayedexpansion
   set/a p3=%p3%-%tt%
   for %%i in (p2 p3 t1 t2) do if "!%%i!" lss 10 set %%i=0!%%i!
   for /f "tokens=*" %%i in ('dir /b /a-d "*.*" 2^>nul') do (
   set "ta=%%~ti"
   if not "%%~fi" == "%~f0" (
   if "!ta:~0,4!!ta:~5,2!!ta:~8,2!!ta:~11,2!!ta:~14,2!" leq "!p1!!p2!!p3!!t1!!t2!" echo "%%~fi"
))
pause




简单!简单!再简单!
2008-6-1 15:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 21 楼』:  

要函数库干什么?
http://www.cn-dos.net/forum/view ... D%E6%95%B0%E5%BA%93



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-6-1 16:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by plp626 at 2008-6-1 16:24:
要函数库干什么?
http://www.cn-dos.net/forum/view ... D%E6%95%B0%E5%BA%93

我不是鸟人 这个鸟语还真看不懂 一个一个分开还差不多 哈哈  玩笑了



简单!简单!再简单!
2008-6-1 18:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


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



  Quote:
Originally posted by terse at 2008-6-1 15:07:
也发一个对年月日的判断 欢迎测试
if "!ta:~0,4!!ta:~5,2!!ta:~8,2!!ta:~11,2!!ta:~14,2!" leq "!p1!!p2!!p3!!t1!!t2!" echo "%%~fi"
))


     &&这个好像是比较不了大小的,举个例子200805120728(2008年5月12日7
时28分)数值的总位数为12位超出了CMD所能处理的最大数值2147483647,所
以要把它分成两段来比较,我是先将前面的年月数值进行比较,如相同再比较后
面的天时分的数值。




批处理之家新域名:www.bathome.net
2008-6-1 19:40
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-1 07:40 PM:


     &&这个好像是比较不了大小的,举个例子200805120728(2008年5月12日7
时28分)数值的总位数为12位超出了CMD所能处理的最大数值2147483647 ...

加上引号后 if判断是以ascii码大小一个一个往后判断,原理上可以判断任意大的数。



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-6-1 20:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 25 楼』:  

不错,所以terse兄有 set %%i=0!%%i! 这样的处理过程,保证了位数是一样的,所以可以判断任意大的数。

[ Last edited by 26933062 on 2008-6-1 at 08:30 PM ]



致精致简!
2008-6-1 20:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: