例如,有一个名为%pathtofolder%的变量,因为它清楚地表明它是文件夹的完整路径。

我想删除这个目录中的每一个文件和子文件夹,但不是目录本身。

但是,可能会出现类似“此文件/文件夹已被使用”的错误…当这种情况发生时,它应该继续并跳过该文件/文件夹。

这有什么命令吗?


当前回答

我尝试了其中几种方法,但没有一种能正常工作。

我在Windows命令行网站上找到了这个两步方法:

forfiles /P %pathtofolder% /M * /C "cmd /c if @isdir==FALSE del @file"

forfiles /P %pathtofolder%  /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"

它完全按照我需要的和OP指定的那样工作。

其他回答

@ECHO OFF

SET THEDIR=path-to-folder

Echo Deleting all files from %THEDIR%
DEL "%THEDIR%\*" /F /Q /A

Echo Deleting all folders from %THEDIR%
FOR /F "eol=| delims=" %%I in ('dir "%THEDIR%\*" /AD /B 2^>nul') do rd /Q /S "%THEDIR%\%%I"
@ECHO Folder deleted.

EXIT

删除给定目录下的所有文件和文件夹,但不删除目录本身。

Rmdir是我最喜欢的命令。它用于删除大文件和带有子文件夹的文件夹。不会创建备份,因此在运行此命令之前,请确保已安全地复制了文件。

RMDIR "FOLDERNAME" /S /Q

这将无声地删除文件夹以及所有文件和子文件夹。

@ECHO OFF
rem next line removes all files in temp folder
DEL /A /F /Q /S "%temp%\*.*"
rem next line cleans up the folder's content
FOR /D %%p IN ("%temp%\*.*") DO RD "%%p" /S /Q

我尝试了其中几种方法,但没有一种能正常工作。

我在Windows命令行网站上找到了这个两步方法:

forfiles /P %pathtofolder% /M * /C "cmd /c if @isdir==FALSE del @file"

forfiles /P %pathtofolder%  /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"

它完全按照我需要的和OP指定的那样工作。

Use:

del %pathtofolder%\*.*   /s /f  /q

这将删除%pathtofolder%中的所有文件和子文件夹,包括只读文件,并且不提示确认。