计划任务执行forfiles.exe失败,返回码2147942401求助
计划任务执行forfiles.exe失败,返回码2147942401求助
兄弟,我之前处理过几乎一模一样的问题!这个返回码2147942401对应的是0x80070001(错误的函数),大概率是你的命令参数里的引号问题在搞鬼!
你看你写的参数里用了中文全角的引号:“Cmd.exe /C del @path\”,计划任务的命令行解析对符号特别敏感,必须用英文半角的双引号;而且你最后那个@path后面的反斜杠也是多余的——@path本身就会返回文件的完整路径,加反斜杠反而会导致路径格式错误,让del命令无法识别。
给你几个具体的调整步骤:
修正命令参数格式:不要把
forfiles.exe写在参数里,应该分开填写:- 「程序或脚本」栏填:
forfiles.exe - 「添加参数(可选)」栏填:
-p "C:\inetpub\logs\LogFiles\W3SVC1" -m *.log -d -30 -c "Cmd.exe /C del @path"
- 「程序或脚本」栏填:
检查「起始于」选项:虽然
forfiles.exe在系统目录里权限足够,但有时候计划任务的起始目录为空会导致解析问题,你可以试试在「起始于(可选)」里填C:\Windows\System32。先做小测试验证:如果还是不确定问题点,可以先把命令改成输出日志的形式,确认
forfiles能正确找到目标文件:- 参数换成:
-p "C:\inetpub\logs\LogFiles\W3SVC1" -m *.log -d -30 -c "Cmd.exe /C echo @path >> C:\temp\old_logs.txt"
运行计划任务后去C:\temp查看是否生成日志,里面是否列出了要删除的文件,这样能先排除路径或文件匹配的问题。
- 参数换成:
另外,关于权限的问题,SYSTEM账号默认对IIS日志目录是有删除权限的,你之前用自己账号命令行能跑但计划任务失败,大概率也是参数格式的锅,先把引号和参数改对应该就能解决了!
备注:内容来源于stack exchange,提问作者Steve Freeman
相关产品推荐
相关产品推荐

