我使用Windows。
我想通过系统调用删除文件夹中的所有文件和文件夹。
我可以这样称呼:
>rd /s /q c:\destination
>md c:\destination
您知道更简单的方法吗?
我使用Windows。
我想通过系统调用删除文件夹中的所有文件和文件夹。
我可以这样称呼:
>rd /s /q c:\destination
>md c:\destination
您知道更简单的方法吗?
Answers:
不,我不认识。
如果您出于某种原因(ACL,&c。)要保留原始目录,而实际上却想清空它,则可以执行以下操作:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
这首先从目录中删除所有文件,然后以递归方式删除所有嵌套目录,但总体上保持顶层目录不变(内容除外)。
请注意,在批处理文件中,您需要%
将for
循环内的double值加倍:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
通过路径替换单词,必要时可以在整个单词周围使用引号。
del c:\destination\*.* /s /q
为我工作。希望对您也一样。
del *.*
del "../../server/front-end\*.*"
我认为最简单的方法是:
rmdir /s /q "C:\FolderToNotToDelete\"
路径中的最后一个“ \”是重要部分。
mkdir C:\FolderToNotToDelete
对我来说已经足够了:)
删除文件:
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
,因为默认重试次数为1百万次。
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
导航到父目录
删除子文件夹
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
,则也必须使用popd
。不幸的是,popd
删除目录时不起作用。因此,您必须cd
代替pushd
。
尝试此操作,这将在根目录下搜索所有MyFolder并删除所有名为MyFolder的文件夹
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"