如何通过cmd调用删除文件夹中的所有文件和文件夹

时间:2009-10-01 09:32:55

标签: windows batch-file

我使用Windows。

我想通过系统调用删除文件夹中的所有文件和文件夹。

我可以这样说:

>rd /s /q c:\destination
>md c:\destination

你知道一种更简单的方法吗?

12 个答案:

答案 0 :(得分:114)

不,我不知道。

如果由于某种原因想要保留原始目录(ACL和& c。),而实际上想要清空它,那么您可以执行以下操作:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

首先从目录中删除所有文件,然后以递归方式删除所有嵌套目录,但总体上保持顶级目录不变(除了其内容)。

请注意,在批处理文件中,您需要将%循环内的for加倍:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"

答案 1 :(得分:28)

del c:\destination\*.* /s /q为我工作。我希望这对你也有用。

答案 2 :(得分:26)

我认为最简单的方法是:

rmdir /s /q "C:\FolderToNotToDelete\"

最后一个" \"在路径中是重要的部分。

答案 3 :(得分:11)

如果子文件夹名称可能包含空格,则需要在转义引号中将它们包围起来。以下示例显示了批处理文件中使用的命令。

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"

答案 4 :(得分:11)

是的!使用Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"

答案 5 :(得分:4)

要删除文件:

del PATH_TO_FILE

删除包含所有文件的文件夹:

rmdir /s /q PATH_TO_FOLDER

删除特定文件夹中的所有文件(不删除文件夹本身)有点复杂。 del /s *.*无法删除文件夹,但会从所有子文件夹中删除文件。因此需要两个命令:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

您可以创建一个脚本来删除您想要的任何内容(文件夹或文件),例如mydel.bat

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

很少使用的例子:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

答案 6 :(得分:1)

一个简单的单行选项是在文件系统的某处创建一个空目录,然后使用ROBOCOPYhttp://technet.microsoft.com/en-us/library/cc733145.aspx)和/MIR开关删除所有文件和子文件夹。默认情况下,robocopy不会复制安全性,因此根文件夹中的ACL应保持不变。

也可能想为重试开关/r设置一个值,因为默认的重试次数是100万次。

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3

答案 7 :(得分:0)

我有一个包含33个文件夹的索引文件夹,需要删除所有文件和子文件夹。我在索引文件夹中打开了一个命令行,然后使用了这些命令:

for /d in (*) do rd /s /q "%a" & (
md "%a")

我将它们分成两行(在第一行后按Enter键,当要求更多添加第二行时),因为如果输入一行,这可能不起作用。此命令将擦除每个目录,然后创建一个空的新目录,从而删除原始目录中的所有文件和子文件夹。

答案 8 :(得分:0)

导航到父目录

Line1推送“父目录”

删除子文件夹

Line2 rd / s / q。 2 - ; NUL

https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt

答案 9 :(得分:0)

只需两个简单步骤。 [/ q表示安静,/ f表示强制,/ s表示子目录]

  1. 清空目录以删除

    del *.* /f/s/q  
    
  2. 删除目录

    cd ..
    rmdir dir_name /q/s
    

See picture

答案 10 :(得分:0)

尝试此操作,这将在根目录下搜索所有MyFolder并删除所有名为MyFolder的文件夹

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"

答案 11 :(得分:0)

del .\*

此命令从命令行中当前导航中删除所有文件和文件夹。