Board logo

标题: 判断文件修改日期,并显示文件名。 [打印本页]

作者: lmm     时间: 2010-6-20 11:56    标题: 判断文件修改日期,并显示文件名。

在d:\z目录下有:
名称                    修改日期
1.txt                   2010-6-12 14:36
2.txt                   2010-6-10 17:12
3.txt                   2010-6-3 12:23
4.txt                   2010-6-20 9:36
我想显示出4.txt 这个文件。
自己写的代码不行。
for /r d:\z %%i in (*.txt) do if "%%~ti" LSS "2010-6-20 00:00" echo %%i  
请各位同仁写出正确的代码。谢谢!!!
作者: Hanyeguxing     时间: 2010-6-20 14:43

@echo off&setlocal enabledelayedexpansion
for %%a in ("d:\z\*.txt") do (
   for /F "tokens=1-5 delims=:-/ " %%b in ("%%~ta") do set c=0%%c&set d=0%%d&set e=0%%e&set f=0%%f
   if "%%b-!c:~-2!-!d:~-2! !e:~-2!:!f:~-2!" gtr "2010-06-20 00:00" echo.%%a
)
pause
[ Last edited by Hanyeguxing on 2010-6-20 at 15:26 ]
作者: lmm     时间: 2010-6-20 15:15
Hanyeguxing你编制的代码,不行。(不能显示文件名4.txt)
作者: Hanyeguxing     时间: 2010-6-20 15:18
打错一个字母,你重新测试
作者: lmm     时间: 2010-6-20 19:11
Hanyeguxing你编制的代码,还是不行。(通过测试不行)
代码中的%%~ti 不是%%~ta.
%%~ti------将%%i扩展到文件的时间/时间。(不知道对不对)
作者: lmm     时间: 2010-6-23 22:19
非常感谢Hanyeguxing对我的回复和指导,下面代码与各位同仁共享。
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d d:\z\*.txt') do (
  set num=%%~ta
  set num=!num:~0,10!
  set num=!num:-=!
  if !num! gqu 20100620  echo %%a
)
pause