0

需要在文件夹中查找超过 X 小时的文件。必须批量执行此操作,因为这是一个较旧的服务器,我们不想在其上加载任何其他内容。这是基于Find out if file is older than 4 hours in Batch file,但该解决方案仅针对一个静态文件名编写。我已经针对多个文件和美国日期格式对其进行了调整,但是我在文件分钟中遇到的问题是上午或下午的“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
4

1 回答 1

0

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

设置 fmin=%fmin:~0,2%

在 Windows 服务器上仅使用 DOS 仍然可以完成的工作简直令人惊叹。我知道这个脚本可以清理和缩短我确信,但它适合我的目的。

于 2013-03-11T15:57:34.743 回答