Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 批处理以删除不到一分钟的文件_Windows 7_Batch File - Fatal编程技术网

Windows 7 批处理以删除不到一分钟的文件

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

我正在尝试删除不到一分钟的.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') 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来分析正在发生的事情

我已经编辑了您的脚本以处理我的日期格式,我可以看到两个问题:

  • 传递第五个参数时出现的游离空白(尽管这可能只是一个剪切粘贴问题);及
  • 您在目录中迭代的方式。我不使用cd“c:*”,而是将for语句修改为:

    对于/f“delims=“%%a in('dir/a-d/b/s c:\'),请调用:CheckMins“%%a”“%%~ta”


  • 正如PA在评论中所说,在以下位置有更好的答案:

    谢谢你,Richard,我非常愿意倾听。我认为代码正在变成一只熊!我认为最好的办法是尽量简单一些。感谢您的帮助。在这一点上,我仍然是一个新手,如果不是很困惑的话!我把它拿回来,现在我已经更仔细地看了你的代码,看起来这个算法能正确地处理闰年。对不起,我发疯了。我会继续寻找,然后再联系你。我已经编辑了我的答案,现在我已经阅读和实验了。我非常喜欢您使用的两种技术,获取文件时间戳,以及通过返回变量名作为最终参数的返回值隧道。对于BAT文件中的时间计算,请参阅我对这个问题的回答,这里有一些非常好的建议。我要玩一下,看看我能把什么贴在一起,谢谢!在没有全面测试的情况下,永远不要运行任何包含DELETE命令的BAT文件。我的建议总是使用ECHO DELETE。