我使用的是Windows操作系统。
我希望通过系统调用删除文件夹中的所有文件和文件夹。
我可能这样调用:
>rd /s /q c:\destination
>md c:\destination
您知道更简单的方法吗?
我使用的是Windows操作系统。
我希望通过系统调用删除文件夹中的所有文件和文件夹。
我可能这样调用:
>rd /s /q c:\destination
>md c:\destination
您知道更简单的方法吗?
不,我不知道。
如果你因为某些原因(比如ACL等)想要保留原始目录,并且真的想要清空它,那么可以执行以下操作:
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"
rd
,rmdir
:删除目录。第一行从目录中删除所有(顶级)文件以清空。第二行将从目录中递归删除所有目录。请注意,rd
不会删除文件(除非在要删除的目录下),而for /d
也只会明确地迭代目录。我实际上认为我的答案足够清晰和简单,但显然不是。 - Joeydel c:\destination\*.* /s /q
对我有效。希望对你也有用。
del *.*
。 - Daniel L. VanDenBoschdel "../../server/front-end\*.*"
。 - FindOutIslamNow*.*
掩码将跳过没有扩展名的文件,例如 makefile
。必须使用掩码 *
。 - Kuznetsov-M我认为最简单的方法是:
rmdir /s /q "C:\FolderToDelete\"
路径中的最后一个“”是重要的部分。
这将删除文件夹本身。如果要保留,请在脚本中添加mkdir "C:\FolderToDelete\"
。
mkdir C:\FolderToNotToDelete
结合起来就足够了 :) - qbolec是的!使用 Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
如果子文件夹名称可能包含空格,您需要用转义引号将它们括起来。以下示例显示了批处理文件中使用命令的情况。
set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
删除文件:
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
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
导航到父级目录
删除子文件夹
pushd
,你也必须使用 popd
。不幸的是,当你删除目录时,popd
不起作用。因此,你必须使用 cd
而不是 pushd
。 - xmedeko我有一个索引文件夹,其中包含33个文件夹,需要将其中的所有文件和子文件夹删除。我在索引文件夹中打开了一个命令行,然后使用了以下命令:
for /d in (*) do rd /s /q "%a" & (
md "%a")
我将它们分成两行(在第一行后按回车键,当要求添加第二行时再添加),因为如果在单行中输入可能无法正常工作。此命令将擦除每个目录,然后创建一个新的空目录,从而删除原始目录中的所有文件和子文件夹。