使用批处理文件,如何删除大型旧文件?

时间:2016-10-25 14:09:41

标签: batch-file

我有临时文件占用了大量磁盘空间,我希望使用批处理文件按计划整理。

我想要处理的文件名始终以" harp _"开头。但我想保留最近的2个文件。

例如,该文件夹包含以下文件:

  • harp_0tnqy2o078824m1ax 25/10/2016
  • harp_0e3qmw11gz6z9j10s 24/10/2016
  • harp_0tnqy2o078824m1ax 23/10/2016
  • harp_11ik03u00g4k2y19y 22/10/2016
  • Test 1 25/10/2016
  • Test 10 10/10/2016

我希望文件夹刚才包含:

  • harp_0tnqy2o078824m1ax 25/10/2016
  • harp_0e3qmw11gz6z9j10s 24/10/2016
  • Test 1 25/10/2016
  • Test 10 10/10/2016

有人能帮我编写批处理文件的脚本吗?

2 个答案:

答案 0 :(得分:2)

您可以使用FOR /F命令来解析DIR命令的输出。关键是使用SKIP选项,以便保留两个最新文件。

FOR /F "skip=2 delims=" %%G IN ('DIR /A-D /B /O-D harp_*') DO del "%%~G"

答案 1 :(得分:1)

如果需要批量打击,我是非常不确定的。在批处理的情况下,我的回答就像Squashman添加了一个闪存方面,要删除的文件被添加到tmp文件中,该文件可能在执行前进行了修改。

@Echo off&Setlocal
Set Basefldr=C:\where\ever
PushD "%Basefldr%" ||(Echo Couldn't cd to %Basefldr% &Pause&Exit /B 1)
Set DelList="%tmp%\DelList.cmd"
Type NUL>%DelList%
For /f "skip=2 delims=" %%A in ('Dir /B/A-D/O-D "harp_*"'
  ) Do >>%DelList% Echo:Del %%~fA
:: Review the file DelList.cmd before executing it
Notepad.exe %DelList%
:: or
::   more %DelList%
popd