如何在目录中查找超过X时间的文件

时间:2013-03-11 15:29:46

标签: windows batch-file cmd

需要查找超过X小时的文件夹中的文件。必须批量执行此操作,因为这是一个旧的服务器,我们不想加载任何其他内容。这基于Find out if file is older than 4 hours in Batch file,但该解决方案仅针对一个静态文件名编写。我已经针对多个文件和美国日期格式调整了它,但是我在文件中遇到的问题是它为am或pm拾取'a'或'p'。我在下面发布了我的部分解决方案(不执行日期数学和回声来筛选文件名和日期/时间值)。关于如何摆脱a或p的任何想法?

rem extract current date
for /f "tokens=1-5 delims=.,/ " %%a in ("%date%") do (
  set day=%%c&set mon=%%b&set yr=%%d
)
REM Extract Current Time
for /f "tokens=1-5 delims=.:, " %%a in ("%time%") do (
set hr=%%a&set min=%%b
)
REM BUILD LIST OF FILES IN DIRECTORY
dir /B /O:N c:\mydir\*myfilestub*.* >list.txt
Rem LOOP THROUGH LIST OF FILES and CALL SUBROUTINE TO CHECK FILE DATE 
For /F %%A in (list.txt) DO (CALL :CHECKFILE %%A)
GOTO :EOF

:CHECKFILE
REM  CHECKING FILE %* 
set filename=%*
rem extract file date and time
for /f "tokens=1-5 delims=.:,/ " %%a in ('"dir c:\mydir\%filename%|find "%filename%""') do (
  set fday=%%a&set fmon=%%b&set fyr=%%c&set fhr=%%d&set fmin=%%e
)        
ECHO   %FILENAME% %fday% %fmon% %fyr% %fhr% %fmin%
GOTO :EOF

1 个答案:

答案 0 :(得分:0)

感谢http://www.dostips.com/DtTipsStringManipulation.php,我得到了我需要的答案,只是在获取文件日期的for循环下面添加了一行

SET fmin =%fmin:~0,2%

在Windows服务器上只使用DOS,你仍然可以实现这一点。我知道这个脚本可以清理和缩短我确定,但它符合我的目的。