我想通过批处理文件删除 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”
显然,这会导致命令对引用的字符串起作用,而不仅仅是字符串本身。