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

ufu*_*gun 77 windows batch-file

我用的是Windows.

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

我可以这样打电话:

>rd /s /q c:\destination
>md c:\destination
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*oey 122

不,我不知道.

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

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
Run Code Online (Sandbox Code Playgroud)

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

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

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Run Code Online (Sandbox Code Playgroud)

  • 我没有批处理文件就能做到这一点.使用&&来连接这两个操作 (3认同)
  • 这个答案让我很难过,因为这是最好的答案 (3认同)
  • 这是做到这一点的方式 (2认同)

小智 33

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

  • 删除所有文件但不删除文件夹. (13认同)
  • 对我有用的是导航到该文件夹​​。(右键单击,在此处选择打开cmd提示),然后单击del *。*。 (2认同)

小智 28

我认为最简单的方法是:

rmdir /s /q "C:\FolderToNotToDelete\"
Run Code Online (Sandbox Code Playgroud)

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

  • 这也会删除文件夹本身. (24认同)
  • 如果您的父文件夹(以这种方式删除)拥有一些重要的权限,您现在需要重新创建这些权限,这可能会出现问题... (3认同)
  • 将它与`mkdir C:\ FolderToNotToDelete`结合起来对我来说足够了:) (2认同)

Ros*_*res 14

是! 使用Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Run Code Online (Sandbox Code Playgroud)


fra*_*tor 12

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

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


Max*_*lov 5

删除文件:

del PATH_TO_FILE
Run Code Online (Sandbox Code Playgroud)

要删除其中包含所有文件的文件夹:

rmdir /s /q PATH_TO_FOLDER
Run Code Online (Sandbox Code Playgroud)

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

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
Run Code Online (Sandbox Code Playgroud)

您可以创建一个脚本来删除所需的任何内容(文件夹或文件),如下所示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%
Run Code Online (Sandbox Code Playgroud)

用法示例:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Run Code Online (Sandbox Code Playgroud)