我正在处理批处理文件以读取文件夹中的文件,如果它们大于4天以前,请将它们移动到存档\ YYYY \ MM文件夹中结构体。下面的代码,因为它代表使用批处理文件按日期清理目录
::MOVE FILES THAT ARE IN THE ERROR FOLDER TO ARCHIVE ACCORDING TO FILES YEAR AND MONTH @echo off set "source=C:\Users\user\Desktop\test" set "targetRoot=C:\Users\user\Desktop\test\archive" For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( set mm=%%A set dd=%%B set yyyy=%%C ) set currdate=%yyyy%%mm%%dd% ::echo %currdate% set /a currdate-=7 ::echo %currdate% for %%F in ("%source%\*") do ( for /f "tokens=1,2,3 delims=/ " %%D in ("%%~tF") do ( SET fileDT=%%F%%D%%E if /I %currdate% GTR %fileDT% ( if not exist "%targetRoot%\%%F" mkdir "%targetRoot%\%%F" if not exist "%targetRoot%\%%F\%%D" mkdir "%targetRoot%\%%F\%%D" move "%%~fF" "%targetRoot%\%%F\%%D" ) ) )
的问题是,经过我添加了
if /I %currdate% GTR %fileDT%线,它不再知道什么%%〜FF的,因此要移动的文件。
我应该注意到我是全新的批处理文件,我主要修改我在网上找到的代码。
您是对的,先生。我改变了参数,它的工作原理。但是,fileDT var在设置一次后不会更新。我在最后添加了一个SET fileDT =以清除它,但它仍然以所有后续文件的第一个文件的日期运行。对此有任何想法? – Dakine83 2012-01-28 01:42:33