gpt4 book ai didi

windows - 如果所有文件都超过 3 天,则批处理文件删除目录中的子文件夹

转载 作者:可可西里 更新时间:2023-11-01 09:34:19 24 4
gpt4 key购买 nike

我需要完成我的批处理脚本。我有一条路径 C:\Users\Mahmo03S\Shaban。在该路径中有几个子文件夹,例如。分析系统。在子文件夹 Ansys 中有更多的子文件夹 = 它是一个文件夹树。如果文件夹和子文件夹中的每个文件都超过 3 天,我的批处理脚本需要删除 Ansys 文件夹。如果在过去 3 天内只修改了 Ansyn 中的一个文件,那么 Ansys 应该不会发生任何事情。我试图制定一个可靠的解决方案但是:批处理文件删除 Ansys 目录中的子子文件夹,因为子子文件夹中的文件自 3 天以来未被修改。

我有 3 个批处理文件来完成任务。

脚本.bat

@echo off
setlocal enableextensions
pushd C:\Users\Mahmo03S\Desktop\Shaban

set /p check="Select a date:"
Rem When prompted with above line type the date 3 days ago.

forfiles /c "cmd /c (IF @isdir==TRUE call C:\Users\Mahmo03S\Desktop\Search.bat "@path" "%check%")"

popd

搜索.bat

set del=TRUE
forfiles /p %1 /d -%2 /s /m * /c "cmd /c (IF @isdir ==TRUE call C:\Users\Mahmo03S\Desktop\DeleteFolders.bat "@path" "%check%" "%del%")"

DeleteFolders.bat

set del=FALSE
if %del%==FALSE (rmdir /S /Q %1)

问题是:我在 Ansys 文件夹中有一个子文件夹(例如 hello)。在 hello 文件夹中,每个文件都超过 3 天。该脚本删除了它不应该做的 hello 文件夹。如果文件夹中的每个文件都超过 3 天,它应该只删除 Ansys。如果在过去 3 天内仅修改了 Ansys 文件夹中的一个文件,则不应删除 Ansys 文件夹中的任何内容。

我制作了批处理文件,因此如果每个文件都超过 3 天,它会删除 Ansys 文件夹。但它不应该仅仅因为其中的文件超过 3 天就删除子子文件夹。

我该怎么做?

最佳答案

一个可行的解决方案可以变得更简单;)

您可以检测 FORFILES 是否打印了任何结果,如果没有打印则采取行动。

使用 FOR/D 迭代直接子文件夹。对于每个文件夹,运行 FORFILES 以查找在截止日期或之后的文件。如果您不必担心忽略文件夹,那么您可以简单地根据 FORFILES 返回码采取行动。但是您不希望根据新的空文件夹得到误报。您可以使用 FINDSTR 检测 FORFILES 是否打印了任何文件名,如果没有打印,则删除文件夹树。如果找到新文件夹,FORFILES 仍会打印一个空行,因此您必须使用 . 搜索字符,而不是使用 "^" 搜索行。

@echo off
setlocal disableDelayedExpansion
set "root=C:\Users\Mahmo03S\Shaban"
set /p "cutoff=Enter a cutoff date (mm/dd/yyyy): "
for /d %%F in ("%root%\*") do (
2>nul forfiles /p "%%F" /d %cutoff% /s /c "cmd /c if @isdir==FALSE echo @file"
) | >nul 2>nul findstr . || rd /s /q "%%F"

在 StackOverflow 和其他地方发布了多种方法来展示如何批量进行日期运算。我偏爱 hybrid JScript/batch utility called getTimestamp.bat .它是纯脚本,可​​以在任何现代 Windows 机器上运行,从 XP 开始 - 不需要第 3 方可执行文件。它充满了选项,允许您进行几乎任何您能想象到的日期计算。

假设 getTimestamp.bat 在您的当前目录中,或者更好的是,在您的 PATH 中的某个位置,那么可以使用以下行来计算您的截止日期,而不是提示输入日期:

call gettimestamp -OD -3 -F {mm}/{dd}/{yyyy} -R cutoff

关于windows - 如果所有文件都超过 3 天,则批处理文件删除目录中的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com