当前位置: 首页 > 知识库问答 >
问题:

删除旧文件并记录它

华振
2023-03-14

我正在寻找一个简单的批处理脚本,它将允许我删除旧文件并记录它是否删除了旧文件。搜索完网站后,我发现“forfiles”非常有用:

forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"

来自:批处理文件以删除超过N天的文件

正如我所说,我关心的是记录已删除的内容。我尝试了很多东西,但仍然不起作用。这是我的实际代码:

set logfile=D:\what\ever\automatic_delete_log_%date:~10,4%-%date:~7,2%-%date:~4,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.txt
forfiles /p "C:\what\ever\Downloads" /s /m *.* /D -290 /C "cmd /c set status=failed; del @path && set status=success; echo @path @fdate %status% >> %logfile%"
echo %logfile%

日志文件已创建,但为空,旧文件不会被删除。(它应该删除我2016年的8个文件)当我使用原始代码时,它会删除文件。我可能读过关于逃离

目标是删除文件,如果成功,则记录“path,date,success”,否则记录“path,date,fail”。

共有1个答案

封锐藻
2023-03-14

只要有足够的逃逸,就可以做到。丑陋,但可以做到。请记住,DEL命令不设置错误级别。对文件存在性的测试将表明该文件尚未成功删除。

forfiles /p "C:\src\t" /s /m *.* /D -290 /C ^"cmd.exe /C ^
    set ^"status=failed^" ^&^& ^
    echo DEL @path ^&^& ^
    IF NOT EXIST @path ( ^
        echo @path @fdate SUCCESSFUL >>^"%logfile%^" ^
    ) ELSE ( ^
        echo @path @fdate FAILED >>^"%logfile%^" ^
    ) ^
    ^"
 类似资料:
  • 我是詹金斯的新用户。我最近遇到了一个失败的产品构建,在该构建中,我看到该特定产品的过去未跟踪的Maven模块被添加到当前要构建的现有Maven模块集中。

  • 问题内容: 我使用以下crontab记录来每天备份数据库: 我想添加另一个crontab记录,该记录将删除早于一个月的数据库转储。 有什么想法吗? 问题答案: 只需创建另一个cron: 它将查找所有早于30天的备份并将其删除。

  • 我在dropwizard yml文件中配置了日志记录以记录到文件而不是控制台,但是一些日志仍在记录到控制台。 service.yml 当我执行时,我在日志文件中获取服务日志,但我在控制台上而不是日志文件中获取请求日志 我正在使用滴滴巫师 0.7.1

  • 我可以使用db2分区特性来满足上述需求吗?。如何使用last_updated_date列和高于两个some_indicator值对表进行分区?一个分区应该包含按月删除标准的记录,而其他分区应该包含按年删除标准的记录。如果这个表被频繁地读取或更新,那么是否存在与表分区相关的性能问题?以上要求的任何其他最佳实践肯定会有所帮助。

  • 问题内容: 我有一个这样的 LoginTime 表: 我只想保留5条最新记录(按“ datetime”列),并删除所有以前的记录,其中 是否可以通过一个mysql查询来实现? 问题答案: 我相信这会奏效…

  • 删除记录命令用于从数据库中完全删除一个或多个记录。 以下语句是命令的基本语法。 以下是有关上述语法中选项的详细信息。 - 指定如何锁定加载和更新之间的记录。有两个选项来指定默认和记录。 - 指定要返回的表达式而不是记录数。 - 定义要更新的最大记录数。 - 定义在超时之前允许更新运行的时间。 注 - 请勿使用删除“顶点”或“边”,因为它会影响图的完整性。 示例 让我们考虑在前一章中创建的表。 编号