如何在 Windows 7 上通过批处理文件删除目录树?

如何在 Windows 7 上通过批处理文件删除目录树?

我想通过批处理文件删除 Windows 7 上指定文件夹的全部内容。我的问题是,“del”或“erase”只删除文件,而不删除文件夹,“rmdir”或“rd”总是删除指定文件夹及其内容,但我只想删除内容,而不是文件夹本身。我尝试了命令“ rmdir /S /Q "C:\Share\*"”,结果出现语法错误。

正确的方法是什么?

我正在使用 64 位 Windows 7 Professional 并且具有管理员权限。

答案1

您的批处理文件需要运行两个命令,一个命令用于清除文件,另一个命令用于删除子目录。我假设您要删除的目录是C:\Share\

该批处理文件看起来应类似于以下内容:

del /s /f /q c:\share\*.*
for /f %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

del /s /f /q将递归搜索目录树,删除任何文件(甚至只读文件)而不提示确认。

第二行循环遍历所有子目录(现在应该是空的)并将其删除。

除了删除整个文件夹并重新创建它(我不认为您想因为权限问题而这样做?)这应该是清除文件夹的最简单方法。

答案2

rmdir /s/q C:\Share

rmdir由于只接受完整名称,而不接受通配符,因此会出现“语法错误” 。(在 中cmd.exe,通配符扩展留给各个程序;并非所有程序都这样做。)

如果您有多个以 开头的目录Share...,请使用for环形。

for /d %f in (C:\Share*) do rmdir /s/q "%f"

答案3

在命令提示符中尝试此操作:

rd /s/q "C:\Share"

答案4

for /f "delims=" %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

如果子目录包含其他含有空格的目录,则此方法不起作用。

为了使这个工作正常,我需要引用最后的字符串,就像这样

对于/f“delims=”%%f在('dir /ad /bc:\share\')中执行rd /s /q“c:\share\%%f”

显然,这会导致命令对引用的字符串起作用,而不仅仅是字符串本身。

相关内容