【发布时间】:2013-05-29 17:50:32
【问题描述】:
我正在使用批处理文件来删除超过 14 天的存档文档,并且我正在从读取脚本返回码的自动化进程 (Lansa Composer) 调用该文件以查看是否存在问题.这是脚本:
@echo off
@Echo Deleting files older than 14 days...
cd /d C:\Windows\System32
FORFILES /P "[file path...]\IDOC_ARCHIVE" /M *.* /D -14 /C "cmd /c del @file"
问题是脚本返回一个错误代码并打印“错误:没有找到具有指定搜索条件的文件”,如果它没有找到任何要删除的文件,而我真的只希望它返回一个错误,如果有是访问目录或运行 del 命令等问题。有什么方法可以让这个脚本抑制“找不到文件”错误,但允许其他人通过?
经过一番谷歌搜索后,我尝试了this page 上的解决方案,但它们无法满足我的要求,因为在第一种情况下它会抑制所有错误,而在第二种情况下,错误消息的文本会被传递,但是实际的返回码仍然被抑制(这是自动化过程读取的内容)。
【问题讨论】:
-
我不知道你需要什么。使用
2>nul抑制错误消息不会删除℅errorlevel%。 -
@Endoro 但它是什么类型的错误是不分青红皂白的。我需要一个解决方案,它只会抑制“找不到匹配的文件”错误,而不是其他类型的错误。我实际上根本不关心错误消息(STDERR 或 STDOUT),除了它似乎是区分不同类型的唯一方法。
-
因此,在 for 循环中捕获错误消息并将其存储在变量中以供进一步分析。
-
尝试
FORFILES /P "[file path...]\IDOC_ARCHIVE" /M *.* /D -14 /C "cmd /c del @file" | find /V "No files found"应该排除该错误消息,但可能不会影响errorlevel -
谢谢@Endoro,成功了。
标签: batch-file