使用批处理中的 forfiles 清除文件并从任务中运行该批处理

使用批处理中的 forfiles 清除文件并从任务中运行该批处理

我在批处理文件中有以下内容,如果我手动执行它,它会正常工作,但是当我告诉任务计划程序运行它时会失败。

forfiles -s -m *.bak -d -4 -c "cmd /c del @path"

此批处理文件将删除与批处理文件位于同一目录中且超过 4 天的 BAK 文件。我无法让 forfiles 从另一个目录运行,因此批处理文件只能在与我的 sql 备份相同的目录中运行。如果有人知道如何编辑我的批处理文件,以便我能够从我的常用批处理文件目录而不是我的 sql 备份文件夹调用它,我将不胜感激。

即使我在配置计划任务时选中“以最高权限运行”复选框,也没有任何变化。顺便说一句,我的任务仅在用户登录且用户帐户实际上是管理员并且 UAC 在这台机器上完全禁用时运行。所以我不确定这可能是权限相关的问题,但我的直觉告诉我这是原因。我希望能够编辑并包含任务调度程序调用它运行时批处理中显示的错误消息。我需要编辑批处理,以便它不会在我看到错误详细信息之前关闭,并且当前保存该文件的机器正在被另一个开发人员使用,所以我必须稍后收集这些附加信息。

希望有人能帮忙!这台机器运行 SQL Express,因此无法使用维护计划,所以这是我的解决方法。如果有更简单的方法可以完成我想做的事情,请告诉我。

答案1

您是否尝试过使用/p其他路径进行搜索?

forfiles /p "d:\path\to\sql\backups" /s /m *.bak /d -4 /c "cmd /c del @path"

另外,将运行任务的用户帐户与 SQL 备份文件夹上的安全设置进行比较。

相关内容