代码之家  ›  专栏  ›  技术社区  ›  ufukgun

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

  •  64
  • ufukgun  · 技术社区  · 15 年前

    我用窗户。

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

    我可以这样打电话:

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

    你知道一个简单的方法吗?

    9 回复  |  直到 15 年前
        1
  •  110
  •   Joey Gumbo    9 年前

    不,我一个都不认识。

    如果出于某种原因(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"
    
        2
  •  26
  •   ra.    12 年前

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

        3
  •  25
  •   foobarfuzzbizz    9 年前

    我认为最简单的方法是:

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

    路径中的最后一个“\”是重要的部分。

        4
  •  9
  •   fractor    11 年前

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

    set targetdir=c:\example
    del /q %targetdir%\*
    for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
    
        5
  •  8
  •   Rosberg Linhares    8 年前

    对!使用powershell:

    powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
    
        6
  •  3
  •   Maxim Suslov    8 年前

    要删除文件:

    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
    
        7
  •  1
  •   BateTech    11 年前

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

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

    robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
    
        8
  •  0
  •   SteveTurczyn    11 年前

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

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

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

        9
  •  0
  •   Community CDub    8 年前

    导航到父目录

    第1行pushd“父目录”

    删除子文件夹

    2号线,RD/S/Q。2镑

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