gpt4 book ai didi

batch-file - 运行计划任务时批处理文件无法删除文件夹

转载 作者:行者123 更新时间:2023-12-04 16:06:36 25 4
gpt4 key购买 nike

我有一个我无法理解的问题,所以我希望我把它放在 StackNetwork 的正确部分。

我有一个批处理文件。

它会转储数据、压缩文件,然后删除刚刚压缩的源文件夹。

这是最后的步骤

CD "C:\Backup\%DATE%\"

REM ----- NOW ZIP THE FILE AND DELETE THE SOURCE -----
"C:\Program Files\WinRAR\WinRAR.exe" a -r -afzip "C:\Backup\%DATE%.zip"

CD "C:\BackUp\"

RMDIR /s /q "C:\BackUp\%DATE%\"

这行代码,删除文件夹。

    RMDIR /s /q "C:\BackUp\%DATE%\"

问题是:

当我手动执行计划任务时,通过右键单击任务并选择RUN,批处理文件运行良好,最后删除了文件夹。

但是当任务在晚上自动运行时,一切顺利,除了,文件夹没有被删除。

我认为它与特权有关,因为当我手动RUN 任务时它确实有效,但有趣的是文件夹 %DATE% 正在创建 whitin批处理文件。

任务设置为以最高权限运行,即使用户已登录也是如此。

最佳答案

在我写我的想法之前,对于目录删除失败的可能原因,我建议在批处理文件中使用:

RMDIR /s /q "C:\BackUp\%TODAY%\" 2>"C:\BackUp\RemoveDirError.log"

在下一次计划任务运行后查看 "C:\BackUp\RemoveDirError.log",其中应该包含错误消息,希望有助于找到目录删除失败的原因。


1。批处理开始和结束的日期不同

环境变量DATE的值始终是当前日期。

如果此批处理文件在午夜执行,则批处理文件开头的 DATE 值将与批处理文件末尾的值不同。

例子:

批处理文件每天23:30:00开始,需要50分钟完成。

在这种情况下,执行的批处理代码例如:

CD "C:\Backup\2014-09-08\"

REM ----- NOW ZIP THE FILE AND DELETE THE SOURCE -----
"C:\Program Files\WinRAR\WinRAR.exe" a -r -afzip "C:\Backup\2014-09-08.zip"

CD "C:\Backup\"

RMDIR /s /q "C:\Backup\2014-08-10\"

注意:日期字符串的格式取决于日期的 Windows 语言设置。

结果是错误信息:

The system cannot find the file specified.

此问题的解决方案是在批处理文件的开头将 DATE 的值分配给一个新变量,并在整个批处理文件中引用此变量而不是 DATE

set TODAY=%DATE%
CD "C:\Backup\%TODAY%\"

REM ----- NOW ZIP THE FILE AND DELETE THE SOURCE -----
"C:\Program Files\WinRAR\WinRAR.exe" a -r -afzip "C:\Backup\%TODAY%.zip"

CD "C:\BackUp\"

RMDIR /s /q "C:\BackUp\%TODAY%\"

环境变量 TODAY 包含日期字符串,在批处理文件执行期间绝对没有改变。


2。 WinRAR 作为单独的进程启动

另一个问题可能是 WinRAR 是 Windows 应用程序而不是控制台应用程序,因此可以在与批处理文件并行执行的单独进程中执行 C:\BACKUP\% DATE%\ 作为当前工作目录。

在这种情况下,批处理作业将在字符串 WinRAR 之后立即继续执行,这就是 Windows 阻止删除目录的原因。

解决方案是使用带有选项/wait 的命令start 来强制将WinRAR 作为单独的进程运行,但暂停批处理作业的执行直到< strong>WinRAR 在完成压缩后自行终止。

set TODAY=%DATE%
CD "C:\Backup\%TODAY%\"

REM ----- NOW ZIP THE FILE AND DELETE THE SOURCE -----
start "Backup Compression" /wait /min "C:\Program Files\WinRAR\WinRAR.exe" a -r -afzip "C:\Backup\%TODAY%.zip"

CD "C:\BackUp\"

RMDIR /s /q "C:\BackUp\%TODAY%\"

但这很可能不是原因,因为在这种情况下,删除文件夹也会在手动运行计划任务时失败。


3。 WinRAR 输出一个问题,没有人回答

WinRAR 可能会在压缩过程中检测到问题,并打开一个消息提示,其中包含要用户回答的问题。由于在计划任务执行时没有人回答,WinRAR 保持压缩的时间异常长。

解决方案是在批处理文件中的 WinRAR 命令行中添加 -y

start "Backup Compression" /wait /min "C:\Program Files\WinRAR\WinRAR.exe" a -r -afzip -y "C:\Backup\%TODAY%.zip"

我又觉得,不删除目录的可能性不大。


我没有更多的想法。如果上述内容无法帮助找到在将批处理文件作为自动执行的计划任务运行时删除目录时出错的原因,我们将需要查看完整的批处理文件代码。

关于batch-file - 运行计划任务时批处理文件无法删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25114767/

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