[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
幸好楼主要求是一小时内而不是几小时几分几秒,所以可以用简单的方式,而不用把时分秒格式转换为秒数来运算时间。
  1. @echo off&setlocal enabledelayedexpansion
  2. set ndy=%date:~0,-4%
  3. set nte=%time:~0,-3%
  4. set nhr=%nte:~0,-6%
  5. set nme=%nte:~3,-3%
  6. set nsd=%nte:~6%
  7. set /a strhr=%nhr%-1
  8. set strTime=%strhr%:%nme%
  9. echo.正在搜索文件,请稍等...
  10. echo.%ndy%  %strTime%--%nte:~0,-3% >t.txt
  11. echo.>>t.txt
  12. for /f "delims=" %%a in ('dir /b/s/a-d e:\') do (
  13.   set t=%%~ta
  14.   set d=!t:~0,-6!
  15.   set t=!t:~-5!
  16.   if !d! equ %ndy% if !t! leq %nte% if !t! geq %strTime% >>t.txt echo.%%a  %%~ta
  17. )
复制代码

[ 本帖最后由 newxso 于 2009-8-18 21:46 编辑 ]

TOP

其实批处理中利用 %%~ti 获取的是最后修改日期,并不是文件的创建日期。对于日期和时间的计算,我觉得最好还是借用VBS比较简单得多:
  1. ' 2>nul&cls&@cscript //nologo //e:vbscript "%~f0" &pause
  2. strNowDate = Now
  3. FilesTree("E:\")
  4. Function FilesTree(sPath)
  5.     Set oFso = CreateObject("Scripting.FileSystemObject")
  6.     Set oFolder = oFso.GetFolder(sPath)
  7.     Set oFiles = oFolder.Files
  8.     For Each oFile In oFiles
  9.         If DateDiff("s",oFile.DateCreated,strNowDate) <= 3600 Then
  10.            Wscript.Echo oFile.Path & "  " &  oFile.DateCreated
  11.         End If
  12.     Next
  13.     Set oSubFolders = oFolder.SubFolders
  14.     For Each oSubFolder In oSubFolders
  15.         FilesTree(oSubFolder.Path)
  16.     Next   
  17.     Set oFolder = Nothing
  18.     Set oSubFolders = Nothing
  19.     Set oFso = Nothing
  20. End Function
复制代码
如果想把结果保存到文本,把第一句改成如下即可:

' 2>nul&cls&@cscript //nologo //e:vbscript "%~f0" >file.txt&exit

[ 本帖最后由 newxso 于 2009-8-19 23:52 编辑 ]

TOP

返回列表