【发布时间】:2016-01-28 07:35:33
【问题描述】:
我从事批处理脚本的工作。我需要做这些事情 1.我想在特定目录中找到像“名称”这样的文件夹 前任: c:\测试\名称 c:\测试\b\名称 c:\测试\n\c\名称 2.name文件夹中,需要删除所有子文件夹和文件,所有超过90天的。
我现在改变了我的问题,请给我一个想法......
【问题讨论】:
标签: windows batch-file
我从事批处理脚本的工作。我需要做这些事情 1.我想在特定目录中找到像“名称”这样的文件夹 前任: c:\测试\名称 c:\测试\b\名称 c:\测试\n\c\名称 2.name文件夹中,需要删除所有子文件夹和文件,所有超过90天的。
我现在改变了我的问题,请给我一个想法......
【问题讨论】:
标签: windows batch-file
@ECHO OFF
SETLOCAL
SET "targetdir=U:\destdir"
ECHO(DEL "%targetdir%\*?*"
FOR /f "delims=" %%a IN (
'dir /b /ad "%targetdir%\*" '
) DO (
ECHO(RD /S /Q "%%~a"
)
GOTO :EOF
您需要更改targetdir 的设置以适应您的情况。如果您愿意,当然可以用文字替换它。
所需的 RD 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(RD 更改为RD 以实际删除目录。
所需的 DEL 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(DEL更改为DEL以实际删除文件。
如果需要,del 和 for 命令可以与& 级联。为清楚起见,for 分布在许多行中。
【讨论】:
您缺少星号 *,因此文件夹集扩展到 _delete 文件夹的所有子目录。此外,/D /R 构造似乎没有必要再考虑一下,因为RD /S 确实已经处理了递归删除目录。
FOR /D %%A IN ( folder_you_want_to_clean\* ) DO IF EXIST "%%A" RD /S /Q "%%A"
但它不会删除folder_you_want_to_clean 文件夹本身中的文件。使用 DEL 命令执行此操作 - /Q 选项会抑制确认提示,就像使用 RD 命令一样:
DEL /Q folder_you_want_to_clean\*
具体示例:假设您要清理的文件夹是C:\data\oldstuff。然后就做:
FOR /D %%A IN ( C:\data\oldstuff\* ) DO IF EXIST "%%A" RD /S /Q "%%A"
C:\data\oldstuff 中包含的所有目录都将消失(当然,这些目录中的所有文件)。但是C:\data\oldstuff 中的任何文件 本身仍然存在!所以要删除它们,请执行以下操作:
DEL /Q C:\data\oldstuff\*
【讨论】:
/R /D 实际上是无效的,需要写成/D /R - 已更正。我对此感到非常惊讶。
/R和/D的顺序......
FORFILES。