有条件地从指定路径递归删除文件夹

时间:2015-02-15 20:14:22

标签: windows cmd

我想从cmd文件下的特定路径递归删除其内容的文件夹。我不想删除与路径相同的文件夹中的其他文件夹。我事先不知道哪个文件夹包含我要删除的文件夹。

我使用文件但不使用文件夹。在这里,我粘贴我的代码:

IF exist "\\PC1\temp\" (
rd "\\PC1\temp\"%dl% /s /q
ECHO Folder deleted successfully in PC1
) ELSE (echo PC1 is not connected)

注意:"%dl是一个变量,其中包含要从用户输入的要删除的文件夹的名称。

但是如果文件夹存在于另一个文件夹中(例如:\ PC1 \ temp \ test),即使我使用/s属性,也无法删除该文件夹。

1 个答案:

答案 0 :(得分:0)

解决方案

这是一个DOS / CMD单行程序,它只会删除当前目录中包含子文件夹“hello”的文件夹:

for /d %d in (*) do if exist "%d\hello\." echo y | rd /s /q "%d"

注意:如果您从批处理文件中运行此操作,则必须在所有位置将%d更改为%%d

rd背景

对rd命令使用“/ s”开关,如果不希望提示,则将“y”加到命令中。请注意,这个命令非常危险(想想unix中的rm -rf):

echo y | rd /s /q "\\PC1\temp\%dl%"

你不必检查文件夹是否存在 - 只要以任何一种方式运行它 - 如果它不存在它将无声地失败并且如果它存在则静默地成功。