当文件出现在目录中时,如何在tcl中自动运行脚本?
我在tcl中有一个脚本可以运行,但到目前为止,我仍在手动执行,因为我必须等待一些文件生成完成当文件出现在目录中时,如何在tcl中自动运行脚本?,tcl,Tcl,我在tcl中有一个脚本可以运行,但到目前为止,我仍在手动执行,因为我必须等待一些文件生成完成 如何使此过程自动化,即如果出现文件,tcl脚本应自动触发?假设监视的目录中通常没有文件,这是定期轮询目录的有效方法: proc waitForFiles {directory} { set files [glob -directory $directory -nocomplain] if {[llength $files] == 0} { doSomethingHere
如何使此过程自动化,即如果出现文件,tcl脚本应自动触发?假设监视的目录中通常没有文件,这是定期轮询目录的有效方法:
proc waitForFiles {directory} {
set files [glob -directory $directory -nocomplain]
if {[llength $files] == 0} {
doSomethingHere
}
# check again in 100 milliseconds
after 100 [list waitForFiles $directory]
}
如果你在使用linux,有一个inotify软件包可用。是的,我在使用linux。我会研究一下你的建议。非常感谢。问题是我不允许添加任何外部包。因此,如果您有其他方法,请指导我完成。我从这篇评论中学到的after命令很有用,但是如果我需要一个特定的文件名,并且如果该文件出现,我将从那里继续执行下一个脚本/命令。我可以在上面提到的代码中集成这个概念吗?将条件更改为
if{$expectedFile in$files}
或if{[file exists[file join$directory$expectedFile]]}
非常感谢Glenn的快速响应!!如果您确切地知道该文件将被调用,文件存在
或文件可读
是可行的选择,并且都比glob
便宜。