批处理文件以递归方式删除超过N天的文件夹中的文件

时间:2015-09-24 19:36:58

标签: windows batch-file recursion cmd

我现在正在使用批处理文件删除所有以.snp结尾且超过180天的文件。下面的代码用于删除以根文件夹

下的.snp结尾的所有文件
  

C:\ Program Files \ Snapshots

但我最近发现在Snapshots文件夹中有按日期组织的文件夹

  

“1-10-2014,12-20-2014,10-15-2014等。”

并且下面的代码行不能以递归方式搜索每个目录,因此不会删除。

我应该对此代码进行哪些更改,以便递归搜索根文件夹中的文件夹并删除超过180天的文件?

forfiles /M *.snp /P "C:\Program Files\Snapshots" /S /D -180 /C "cmd /c del /F /Q @path"

2 个答案:

答案 0 :(得分:2)

没有/ D(日期)它适用于子文件夹

forfiles /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path

但你显然希望日期在那里 然后在CMD

forfiles /D -180 /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path

路径名前面的/ D选择超过180天前已更改的所有文件

答案 1 :(得分:1)

最高可靠性的最佳选择是将For命令的强度与FORFILES命令结合起来,以便每个人都能做到他们最擅长的事情。

<section id="portfolio">
  <div class="container">
    Content
  </div>
</section>

在第二个FOR命令中,反引号(〜键)包含FORFILES命令,并使用控制台输出调用批处理子例程来删除指定的文件。

文件夹和文件名中的空格不会减慢这个野兽的速度,并且围绕Set命令的双引号[&#34;]将允许该进程处理包含括号或其他异国情调的文件夹和文件,但是允许的字符。