Windows 7 批处理以删除不到一分钟的文件
我正在尝试删除不到一分钟的.zip、.jpg和.txt文件。我还没有添加文件类型。稍后再谈。但在这一点上,这似乎并没有删除任何内容。欢迎任何帮助。这是在Windows中Windows 7 批处理以删除不到一分钟的文件,windows-7,batch-file,Windows 7,Batch File,我正在尝试删除不到一分钟的.zip、.jpg和.txt文件。我还没有添加文件类型。稍后再谈。但在这一点上,这似乎并没有删除任何内容。欢迎任何帮助。这是在Windows中 @echo off cd "c:\*\*" setlocal call :DateToMinutes %date:~-4% %date:~-10,2% %date:~-7,2% %time:~0,2% %time:~3,2% NowMins for /f "delims=" %%a in ('dir * /a-d /b
@echo off
cd "c:\*\*"
setlocal
call :DateToMinutes %date:~-4% %date:~-10,2% %date:~-7,2% %time:~0,2% %time:~3,2% NowMins
for /f "delims=" %%a in ('dir * /a-d /b') do call :CheckMins "%%a" "%%~ta"
goto :EOF
:CheckMins
set File=%1
set TimeStamp=%2
call :DateToMinutes %timestamp:~7,4% %timestamp:~1,2% %timestamp:~4,2% %timestamp:~12,2% % timestamp:~15,2%%timestamp:~18,1% FileMins
set /a MinsOld=%NowMins%-%FileMins%
if %MinsOld% leq 1 del %file%
goto :EOF
:DateToMinutes
setlocal
set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
if 1%hh% LSS 20 set hh=0%hh%
if /i {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88
if /i {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00
if /i {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%
set /a hh=100%hh%%%100,nn=100%nn%%%100,j=j*1440+hh*60+nn
endlocal&set %6=%j%&goto :EOF
首先,您的脚本对我不起作用,因为它依赖于日期和时间格式,而对我来说:
c:\>echo %date%
Tue 27/09/2011
c:\>echo %time%
9:52:31.68
除此之外,通过暂时注释顶部的@echo off来分析正在发生的事情
我已经编辑了您的脚本以处理我的日期格式,我可以看到两个问题:
正如PA在评论中所说,在以下位置有更好的答案:谢谢你,Richard,我非常愿意倾听。我认为代码正在变成一只熊!我认为最好的办法是尽量简单一些。感谢您的帮助。在这一点上,我仍然是一个新手,如果不是很困惑的话!我把它拿回来,现在我已经更仔细地看了你的代码,看起来这个算法能正确地处理闰年。对不起,我发疯了。我会继续寻找,然后再联系你。我已经编辑了我的答案,现在我已经阅读和实验了。我非常喜欢您使用的两种技术,获取文件时间戳,以及通过返回变量名作为最终参数的返回值隧道。对于BAT文件中的时间计算,请参阅我对这个问题的回答,这里有一些非常好的建议。我要玩一下,看看我能把什么贴在一起,谢谢!在没有全面测试的情况下,永远不要运行任何包含DELETE命令的BAT文件。我的建议总是使用ECHO DELETE。