急需BAT!删除最后修改时间在某个日期之
强烈要求楼主置顶!!!
@echo off
:: 请根据情况修改下面几行的日期和文件夹
call :date2days 2011 12 21 DD
set "DDIR=1"&call top
set "DDIR=2"&call top
set "DDIR=3"&call top
exit
:top
cd /d "D:\%DDIR%"
md "e:\bak\%DDIR%"
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b *。 txt') do (
for /f "tokens=1-3 delims=/- " ...全部
强烈要求楼主置顶!!!
@echo off
:: 请根据情况修改下面几行的日期和文件夹
call :date2days 2011 12 21 DD
set "DDIR=1"&call top
set "DDIR=2"&call top
set "DDIR=3"&call top
exit
:top
cd /d "D:\%DDIR%"
md "e:\bak\%DDIR%"
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b *。
txt') do (
for /f "tokens=1-3 delims=/- " %%t in ("%%~ti") do (
call :date2days %%t %%u %%v days
:: 如果演示没问题,请把下行的 echo 删掉再运行
if !days! LSS %DD% echo move "%%i" "e:\bak\%DDIR%"
))
::每个文件夹暂停一下。
如果演示没问题,请将下行 pause 删掉
pause
goto :eof
:date2days
setlocal disabledelayedexpansion
set/a days=10%~3%%100-719050+30*(m=10%~2%%100)+m/9*-~m/2+!(m/9)*m/2+!!(m/3)*(!((y=%1)%%4)-!(y%%100)+!(y%%400)-2)+y*365+~-y/4-~-y/100+~-y/400-396-%50/10*!%60
(endlocal&set %7=%days%||set %4=%days%||echo %days%
if% ll%0%4%5%6%7%days%)2>nulif /i %0==:date2days exit/b0追问你好 感谢你的热心帮助,但是这个bat运行不成功,烦请再看看,谢谢
回答你要修改里面的文件夹为实际存在的文件夹
如果目标文件夹是 D:\wenjianjia1, 就修改为
set "DDIR=wenjianjia1"&call top
这样会操作 D:\wenjianjia1,把符合要求的文件移动(相当于备份+删除)到 e:\bak\wenjianjia1
if !days! 那行的内容暂时是演示,会显示移动文件的命令(但不执行),
删掉 echo 才真正移动
不要一句不成功,很难继续帮忙的,你要告诉我你运行后显示的什么信息、有什么情况……,以便分析
追问我按照您说的改过了,还是不行。
运行bat后没有打屏,一闪而过。
运行后没有任何打屏,DOS窗口一闪而过。我真的看不到显示什么。
回答在Windows2003 和 Win7 中测试通过:
@echo off
call :date2days 2011 12 21 DD
cd /d "D:\1"
set "Bbak=E:\Bbak\1"
md E:\Bbak\1
call :top
cd /d "D:\2"
set "Bbak=E:\Bbak\2"
md E:\Bbak\2
call :top
cd /d "D:\3"
set "Bbak=E:\Bbak\3"
md E:\Bbak\3
call :top
exit
:top
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b /a-d *。
*') do (
for /f "tokens=1-3 delims=/- " %%t in ("%%~ti") do (
call :date2days %%t %%u %%v days
:: 如果演示没问题,请把下行的 echo 删掉再运行
if !days! LSS %DD% echo move "%%i" "%Bbak%"
))
pause
goto :eof
:date2days
setlocal disabledelayedexpansion
set/a days=10%~3%%100-719050+30*(m=10%~2%%100)+m/9*-~m/2+!(m/9)*m/2+!!(m/3)*(!((y=%1)%%4)-!(y%%100)+!(y%%400)-2)+y*365+~-y/4-~-y/100+~-y/400-396-%50/10*!%60
(endlocal&set %7=%days%||set %4=%days%||echo %days%
if% ll%0%4%5%6%7%days%)2>nulif /i %0==:date2days exit/b0。
收起