利用任務計劃自動刪除指定日期文件

2012-8-6 13:47:40 | tags | views

    因為最近做的一個項目需要定期對一個文件夾下的文件進行刪除.所以打算得用下任務計劃來搞.一開始想著用del 命令來寫的.后來發現用forfiles命令來搞.效果非常的不錯.所以寫出來.

    先學習下基礎知識吧:

一:刪除7天以前備份的文件
命令
FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
 
方法1:
描述:可以刪除7天以前的后綴名為log的日志文件。如今天是6.29,那么會刪除6.22
號以前創建的文件。不會刪除到回收站。
指定路徑為要刪除的文件夾路徑,該批處理可以放在任意文件夾下。
forfiles /p D:\aizzw\LOG /m *.log -d -7 /c "cmd /c del /f @path"
參數解釋:
這里的/p 指的是要刪除的備份文件路徑
        /m 指的是要匹配的字符,通配符為*號,后綴名可以根據實際情況修改。
如zzw*.log;*.bak;*.txt
-d 指的是日期,“-d -7”指的是從但前日期當前日期往前減7天。
/c 指的是執行命令
@path 返回文件完整路徑
方法2:
描述:可以刪除7天以前的后綴名為log的日志文件。
不需要指定路徑,必須放在要刪除日志的文件下。刪除當前文件夾下的匹配文件。
forfiles /m *.log -d -7 /c "cmd /c del /f @path"
以上批處理已經在windows 2003的虛擬機測試通過
 
方法3:
為網友提供,可適用于xp,2000,而forfiles默認只有2003以上的系統才有。
 
::刪除F:\文件備份里的 7天前的txt文件
::被刪除的文件日期以文件創建日期為主
@echo off
::取7天之前的日期.
>deldata_zw.zhu.vbs echo wscript.echo dateadd("d",-7,date)
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo deldata_zw.zhu.vbs') do (
set y=%%i
set m=%%j
set d=%%k
)
if %m% LSS 10 set m=0%m%
if %d% LSS 10 set d=0%d%
set rq=%y%-%m%-%d%
echo 注意:即將刪除 %rq% 以前建立的文件
pause
::判斷文件
for /f "skip=4 delims=" %%i in ('dir/tc F:\TEST\*.log') do call :w "%%i"
del deldata_zw.zhu.vbs
goto :eof
:w
for /f "tokens=4 delims= " %%a in (%1) do set str=%%a
set var=%1
set num=%var:~1,10%
if %num% lss %rq% del /q F:\TEST\%str%
 
 
二:自動創建每周運行一次的計劃任務
創建計劃任務可用at,schtasks命令,schtasks提供了很多參數
命令schtasks
SCHTASKS /Create [/S system [/U username [/P [password]]]]
    [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
    [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
    [/RI interval] [ {/ET endtime | /DU duration} [/K] ]
    [/SD startdate] [/ED enddate] [/IT] [/Z] [/F]
方法:
@echo off
schtasks /create /tn "Del-7_log" /ru system /tr D:\aizzw\del-7.bat /sc
weekly /d mon /st 01:00
start %systemroot%\tasks
echo 創建成功,請檢查...
pause
del /f Create.bat
參數解釋:
schtasks /create 指的是創建計劃任務
/tn 指定計劃任務的名稱
/ru 指定運行該批處理的賬號,如果去掉該參數則默認為當前賬戶運行,會提示輸入密碼。
一個計劃任務所用的賬號如果密碼變動后該批處理就不再會運行成功
所以我這里使用系統賬號system,密碼就省略不寫。
/rp   指定賬號的密碼
/tr 指定程序所在路徑,這里為指定要執行的批處理存放路徑。
/sc 為指定運行的周期
/d 為日期.這里mon為英文單詞縮寫,周一
/st 為運行時間
start %systemroot%\tasks 這一句只是為了彈出計劃任務窗口查看創建成功與否
del /f Create.bat 為創建完成后自動刪除創建該計劃任務的批處理
schtasks命令詳細解釋可以參見微軟
 

http://technet.microsoft.com/zh-cn/cc772785(WS.10).aspx#BKMK_create

 

好了基本知識具備后就實際應用

我寫的BAT文件內容為:

forfiles /p 文件目錄 /m *.doc -d -7 /c "cmd /c del /s /f @path >>1.txt"

 

刪除指定的目錄下的DOC文檔,并將刪除的文件保存在刪除的文件目錄下的1.txt文檔.在任務計劃里設定每周一0點執行.

這樣就實現了清除一周前的文檔的功能了
 

    相關文章:

發表評論:

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

手机捕鱼怎么下载
彩96官网 快乐飞艇冠军计划 中国五洲彩票 北京pk10软件手机软件 网上通比牛牛有假吗 时时彩玩法介绍 北京pk赛车10官网 时时彩后一九码倍投 皇家国际在线娱乐 排九至尊大还是天牌大 北京pk历史开奖记录 手机真人龙虎技巧 秒速时时技巧怎么玩 法甲积分榜 宝宝计划破解版软件下载 腾讯彩票合法吗