批量删除文件夹

6

首先:我对批处理完全不熟悉。

我想编写一个批处理文件,可以删除5天或更早的文件和文件夹。这段代码对所有文件都起作用:

FORFILES /p "C:\Users\rs\Desktop\testbatch" /s /m *.* /d -5 /c "cmd /c if not @isdir==TRUE del @path"

我的文件夹还在,但我不知道如何删除它们,即使它们已经存在了至少5天。有人可以给我一个提示吗?

谢谢


可能是重复的问题:批处理文件删除 N 天前的文件 - esac
1
@esac:不是重复问题,这是关于删除文件夹的,更具体地说是问为什么文件夹本身没有被删除,但文件已经被删除。 - icabod
@esac 这不是重复的问题。我问为什么我的文件夹仍然存在 :) - roemel
这个“如何删除 x 天前的文件”问题在这里被问得相当多。我在相关侧栏中看到了 6 个。有很多例子可以完成它。不需要另一个。事实上,这个特别指出要使用 rmdir,这是同样的问题的答案。http://stackoverflow.com/questions/13517017/batch-file-to-delete-files-and-folder?rq=1 - esac
@esac 是的,但我没有找到一个能告诉我为什么我的文件夹仍然存在的描述。我看了很多这样的帖子,但没有一个真正帮助了我。 - roemel
显示剩余2条评论
2个回答

2

del命令用于删除文件,而需要使用rmdir命令来删除目录。


你说的 rmdir 是指 rd 吗?如果我写 rmdir 或者 rd 有什么区别吗? - roemel
不,它们是一样的。我不知道哪个是另一个的别名,但我知道两者都做同样的事情。rmdir 增加了可读性(在我看来),以便理解您正在删除目录,尽管与 mkdirmd 一样。 - mavrosxristoforos
好的,谢谢。所以现在我有了if not @isdir==TRUE rd /s /q @path而不是if not @isdir==TRUE del @path。这应该是正确的,对吗?但它似乎不起作用,因为文件夹仍然存在(为了测试,我将/d -0添加到文件中)。 - roemel
1
你可能想把 *.* 改成 *。你不是在寻找文件。 - mavrosxristoforos
好的,谢谢。太糊涂了 >.< 我只看了命令行的最后一部分,忘记了第一部分。谢谢你们 :) - roemel
显示剩余2条评论

1
FORFILES /p "C:\Users\rs\Desktop\testbatch" /s /m *.* /d -5 /c "cmd /c if  @isdir==TRUE  rd /s /q  @path "

我必须使用/s两次吗? - roemel
第二个 /s 命令用于 rd,如果你输入 rd /? 则表示“删除指定目录中的所有目录和文件以及目录本身。用于删除目录树。” - mavrosxristoforos
好的,谢谢。但似乎不起作用。我尝试了/d -0来测试它,但我的文件夹仍然在这里。 - roemel
否则它仅会删除文件。 - npocmaka
谢谢。我注意到这是必要的 :) - roemel
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接