有些东西在等待着...
请记住,当我手动运行脚本时,它按预期工作,但是当通过任务计划程序运行时则不然。
我有一个TCL脚本,应该检查网络驱动器上是否存在文件,并在存在时将其删除。我是这样做的:
if {[file exists X:/path/to/file.txt]} {
log_output "Deleting file X:/path/to/file.txt"
file delete -force X:/path/to/file.txt
}
我注意到当通过任务计划程序运行时,该文件从未被删除。因此,我进行了另一次检查以获取更多信息。
if {[file exists X:/path/to/file.txt]} {
log_output "File X:/path/to/file.txt NOT DELETED!"
} else {
log_output "File X:/path/to/file.txt DELETED!"
}
我的输出结果是:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
第二行确认文件确实被报告为已删除,因为存在检查失败。最后,我运行了一个生成新文件的命令。
exec myProgram --outFile X:/path/to/file.txt
再次强调,奇怪的是当我手动运行这个脚本时,它可以完美地运行。但是,当我设置通过任务计划程序(使用Win7)运行时,旧文件并没有被删除,即使输出日志显示已经删除了:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
当我检查文件的日期和时间戳时,它总是来自上一次手动运行的时间。我以为这更像是权限错误,但这毫无意义。为什么会报告已删除但仍然未被更改?
为了彻底,我尝试了其他解决方法。而不是通过命令将文件写入网络驱动器,我尝试在本地编写它:
if {[file exists C:/path/to/file.txt]} {
log_output "Deleting file C:/path/to/file.txt"
file delete -force C:/path/to/file.txt
}
if {[file exists C:/path/to/file.txt]} {
log_output "File C:/path/to/file.txt NOT DELETED!"
} else {
log_output "File C:/path/to/file.txt DELETED!"
}
exec myProgram --outFile C:/path/to/file.txt
然后将它复制到网络驱动器:
file copy -force C:/path/to/file.txt X:/path/to/file.txt
file copy -force C:/path/to/file.txt X:/path/to/file1.txt
我明白:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
Deleting file C:/path/to/file.txt
File C:/path/to/file.txt DELETED!
但是,老的文件仍然存在,新的文件'file1.txt'不存在...再次手动运行始终成功。
//machine/share/path/to/file.txt
)。 - Johannes Kuhn