tcl - 文件不删除 TCL

标签 tcl scheduled-tasks network-drive

有些东西在说谎......

请记住,当我手动运行脚本时,这会按预期工作,但当它通过任务调度程序运行时则不会。

我有一个 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”不存在......

同样,手动运行总能取得成功。

最佳答案

试试这个

1.在变量中设置文件位置或路径为

set way "/XX/XXX".

2.应用这个

if {[file exists $way/file.txt]} {
    exec rm -f $way/file.txt 
}

我希望这会奏效。

关于tcl - 文件不删除 TCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595997/

相关文章:

tkinter - 隐藏 Tktable 中的字符

mysql - Tcl/MySQL查询: comparing integer to seconds

java - java中如何触发计划异常?

haskell - 将文件读取为字节串并将此字节串写入文件 : issue on a network drive

测试网络共享时,PowerShell Test-Path返回False

c++ - tcl 文件无法获取通过代码设置的环境变量

java - 如何安排任务运行一次?

javafx - Javafx 中 'ScheduledService' 的简单示例

c# - 在网络共享驱动器上复制文件

sql-server - 在 Win x64 上通过 MS SQL 使用 Tcl 和 tdbc