How do I write a batch file to delete folders and files on a time basis?

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

Exact Duplicates:

I want write a batch file to delete folders, subfolders and temporary files on time basis.

The conditions are like this:

  • I need to delete the file from folder one hour before to current running time.
  • I want to get the current time from system and delete the one hour before files
  • The file format is like this: <file name> <date>
  • The time format is dd-mm-yyyy-hh-mm or dd-mm-yy-hh-mm

回答1:

Batch can be surprisingly powerful but I don't think the kind of date manipulation you want will be practical.

You can use FOR to split the date into elements and then use SET /A to do the subtraction, but then you're going to need a huge number of IF and GOTO statements to handle cases like subtracting an hour from half past midnight on the 1st of January.

I think you'd be better off investigating VBS or Powershell.



回答2:

You may want to try this script to delete files from a folder that are older than 1 hour.

# Script Delete1Hour.txt var str folder, list, file cd $folder lf -n "*" $folder ($ftype=="f") AND ( $fmtime < addtime(diff("-10000")) ) > $list while ($list <> "") do     lex "1" $list > $file     system del ("\""+$file+"\"") done 

This is biterscripting. The important command is

lf -n "*" $folder ($ftype=="f") AND ( $fmtime < addtime(diff("-10000")) ) 

Which tells biterscripting - give me all entries in folder $folder with names that match the patten "*" whose file type is "f" (flat file, not directory), and whose file modification time ($fmtime) is earlier than 1 hour. See the documentation for the lf command at http://www.biterscripting.com/helppages/lf.html .

Save the script in file C:/Scripts/Delete1Hour.txt, run it as

script  "C:/Scripts/Delete1Hour.txt" folder("C:/testfolder") 

It will delete all files from C:/testfolder that are older than 1 hour.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!