如何从命令行递归删除 Windows 上的文件或文件夹?
我已经找到了这个解决方案,其中我们在命令行上驱动路径并运行这个命令。
我给出了一个带有. svn 文件扩展名文件夹的示例:
for /r %R in (.svn) do if exist %R (rd /s /q "%R")
你可以在 bat脚本中使用:
bat
rd /s /q "c:\folder a"
现在,只需将 c:\folder a更改为文件夹的位置。只有当文件夹名包含空格时才需要引号。
c:\folder a
RMDIR path_to_folder /S
例如 RMDIR "C:\tmp" /S
RMDIR "C:\tmp" /S
注意,如果您真的要删除“ C: tmp”文件夹,系统会提示您。将它与/Q 开关组合起来,就可以悄悄地删除文件夹(例如。RMDIR "C:\tmp" /S /Q)
RMDIR "C:\tmp" /S /Q
请执行以下步骤:
发出以下命令
del /S *.svn
其他答案对我没用,但这个有用:
del /s /q *.svn rmdir /s /q *.svn
/q 禁用 Yes/No 提示
/s 意味着从所有子目录中删除文件。
对于文件删除,我写了以下简单的批处理文件,递归删除所有.pdf 的:
del /s /q "\\ad1pfrtg001\AppDev\ResultLogs\*.pdf" del /s /q "\\ad1pfrtg001\Project\AppData\*.pdf"
即使对于本地目录,我们也可以将其用作:
del /s /q "C:\Project\*.pdf"
同样的方法也可以应用于删除目录,只需将 Del改为 Rmdir即可。
如果要递归删除特定的扩展名,请使用以下命令:
For /R "C:\Users\Desktop\saleh" %G IN (*.ppt) do del "%G"
你也可以这样做:
del /s /p *.{your extension here}
如果您对删除不应该删除的内容感到紧张,/p会提示您查找每个找到的文件。
/p
也就是说,临时工
我使用下面这些图片已经有好几年了,完美无瑕。 使用以下选项查看其他选项: < em > forfiles/? 递归删除 Windows 文件夹中的 SQM/遥测 forfiles /p %SYSTEMROOT%\system32\LogFiles /s /m *.* /d -1 /c "cmd /c del @file" 递归删除窗口 TMP 文件 forfiles /p %SYSTEMROOT%\Temp /s /m *.* /d -1 /c "cmd /c del @file" 递归地删除用户 TEMP 文件和文件夹 forfiles /p %TMP% /s /m *.* /d -1 /c "cmd /c del @file"
我使用下面这些图片已经有好几年了,完美无瑕。
使用以下选项查看其他选项: < em > forfiles/?
递归删除 Windows 文件夹中的 SQM/遥测
forfiles /p %SYSTEMROOT%\system32\LogFiles /s /m *.* /d -1 /c "cmd /c del @file"
递归删除窗口 TMP 文件
forfiles /p %SYSTEMROOT%\Temp /s /m *.* /d -1 /c "cmd /c del @file"
递归地删除用户 TEMP 文件和文件夹
forfiles /p %TMP% /s /m *.* /d -1 /c "cmd /c del @file"
对于隐藏文件,我必须使用以下内容:
DEL /S /Q /A:H Thumbs.db
用本机命令完全擦除文件夹,并获取已完成的操作的日志。
这里有一个不同寻常的方法:
假设我们要清除 d: temp dir
mkdir d:\empty robocopy /mir d:\empty d:\temp rmdir d:\empty
dir /b %temp% >temp.list for /f "delims=" %%a in (temp.list) do call rundll32.exe advpack.dll,DelNodeRunDLL32 "%temp%\%%a"
这招对我很管用
Del/s/q“ dir _ name”
Windows 命令处理器 cmd.exe有两个用于删除文件和文件夹的内部命令:
cmd.exe
help del
del /?
help rmdir
rmdir /?
help rd
rd /?
可以在命令提示符窗口或 Windows 批处理文件中使用以下命令来删除所有的 文件,其中长或短的8.3文件名与目录 %USERPROFILE%\Projects或其任何子目录中的通配符模式 *.svn匹配:
%USERPROFILE%\Projects
*.svn
del /A /F /Q /S "%USERPROFILE%\Projects\*.svn" >nul 2>&1
使用选项 /A来匹配与文件属性无关的所有文件,替换了隐式默认的 /A-H来忽略隐藏文件。因此,即使是具有隐藏属性的文件也会因为使用选项 /A而被该命令删除。如果不使用选项 /A,则忽略通配符模式 *.svn与隐藏属性集匹配的文件。
/A
/A-H
选项 /F强制删除文件扩展名为 .svn且设置了只读属性的文件。如果 *.svn文件设置了只读属性,并且在运行命令 DEL时没有使用选项 /F,则会输出错误消息 Access is denied.。
/F
.svn
Access is denied.
安静选项 /Q阻止用户确认提示 Are you sure (Y/N)?。
/Q
Are you sure (Y/N)?
选项 /S不仅导致在指定的目录中搜索,而且导致在其所有子目录中搜索,包括那些设置了隐藏属性的子目录,即使不使用选项 /A搜索通配符模式 *.svn匹配长或短8.3名称的文件。
/S
两个 改变方向 >nul和 2>&1导致重定向删除文件输出列表以处理 STDOUT(标准输出)和错误消息输出以处理 STDERR(标准错误)到设备 NUL以抑制每个输出。
>nul
2>&1
在使用这个命令时,也会删除与通配符模式 *.svn匹配的硬链接和符号链接,但是如果文件名没有以 .svn结尾或者位于不同的目录树中,则不会删除所链接的文件。
进程(程序/应用程序)当前打开的通配符模式 *.svn匹配的文件,使用共享访问权限拒绝所有其他进程删除该文件,只要该进程打开该文件,该命令就不会删除该文件。文件系统权限也可能导致此命令不删除文件。
可以在一个命令提示符窗口中使用以下命令来删除所有在长或短8.3文件夹中匹配的 文件夹文件名通配符模式 %USERPROFILE%\Projects目录及其所有子目录中的通配符模式:
for /F "delims=" %I in ('dir "%USERPROFILE%\Projects\*.svn" /AD /B /S 2^>nul') do @rd /Q /S "%I" 2>nul
在顶部包含 @echo off的批处理文件中使用的相同命令行是:
@echo off
for /F "delims=" %%I in ('dir "%USERPROFILE%\Projects\*.svn" /AD /B /S 2^>nul') do rd /Q /S "%%I" 2>nul
在后台执行更多的 cmd.exe,选项 /c和在 '之间指定的命令行作为附加参数,在后台运行 Windows Command Processor 内部命令 DIR进行搜索
/c
'
/AD
根据这些条件匹配的文件系统条目(= 目录名)是以裸格式输出的,因为选项 /B带有完整路径,因为选项 /S处理后台命令进程的 STDOUT而不包围 ",即使在包含空格或这些字符之一的完整目录名 &()[]{}^=;!'+,`~上也是如此。如果没有找到任何匹配这些条件的名称,DIR输出的错误消息将被重定向到设备 NUL以抑制它。
/B
"
&()[]{}^=;!'+,`~
重定向操作符 >必须在 为了命令行上用插入字符 ^转义,当 Windows Command Processor 在执行命令 为了之前解析这个命令行时,它将被解释为文字字符。 为了执行嵌入的 dir命令行时,使用一个单独的命令进程在后台启动。
>
^
dir
处理批处理文件的 cmd.exe捕获目录名及其处理 STDOUT的完整路径的输出列表,并在启动 cmd.exe关闭自身后由 为了处理。
适用于/F选项 delims=定义了一个空的字符串分隔符列表,这导致每个完整的目录名被一个接一个地分配给指定的循环变量 I。
delims=
I
由于选项 /Q,执行命令 RD以悄悄地删除包含所有文件和所有子目录的目录。
在使用此命令时,也会删除与通配符模式 *.svn匹配的连接(软链接)和符号目录链接,但不会删除与目录名不以 .svn结尾或位于不同目录树中的目录链接。
与通配符模式 *.svn匹配的目录,其中一个文件当前由进程(程序/应用程序)打开,使用共享访问权限拒绝所有其他进程删除该文件,只要被这个进程打开不被这个命令删除,当然也没有目录以上的目录包含文件,不能被删除的时刻。文件系统权限也可能导致此命令不删除目录。默认情况下,Windows 也会防止删除任何运行进程的当前工作目录目录。
在上面的命令中,目录路径 %USERPROFILE%\Projects\可以被完全删除或者由 .\替换,以删除在执行命令的 Windows Command Processor 进程的 工作目录中与通配符模式 *.svn匹配的文件和文件夹。
%USERPROFILE%\Projects\
.\
目录路径 %USERPROFILE%\Projects\可以由 %~dp0替换,使用上面的命令行在一个批处理文件中删除与 批处理文件的目录中的通配符模式 *.svn匹配的文件和文件夹,这个批处理文件的执行与哪个目录无关,而这个目录是执行批处理文件的工作目录。
%~dp0
目录路径 %USERPROFILE%\Projects\也可以替换为相对路径。有关相对路径的详细信息,请阅读有关 命名文件、路径和命名空间的 Microsoft 文档。
为了理解所使用的命令及其工作原理,请打开一个 命令提示符窗口,在那里执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
dir /?
for /?
运行 mklink /?获取关于如何创建 MKLink很好地解释的文件和目录链接的帮助。
mklink /?
参见:
dir -Recurse *.[extension] |del