File Tcl&x2B;检查文件是否存在

File Tcl&x2B;检查文件是否存在,file,tcl,expect,file-exists,File,Tcl,Expect,File Exists,我试图检查Tcl中是否存在文件,但似乎无法得到真实的结果。即使我知道它存在 while {true} { if { [file exists $file_name] == 1} { exp_send "copy file.txt destination \r" puts " File copied!" } puts "File Not copied" } 我总是执行文件未复制行。我为[file

我试图检查Tcl中是否存在文件,但似乎无法得到真实的结果。即使我知道它存在

while {true} {

    if { [file exists $file_name] == 1} {               
        exp_send "copy file.txt destination \r"
        puts " File copied!"
    }

    puts "File Not copied"

    }
我总是执行文件未复制行。我为
[file exists$file\u name]
做了一次put,结果总是0。但是我知道这个文件存在于当前目录中。有什么建议吗

编辑:

我尝试采用的另一种方法是,当我使用tcl脚本执行
dir
时。我将获得目录中所有文件的输出。我只需要将我的文件与输出的列表匹配,并在找到匹配项时满足
if


我从位置A执行脚本,但使用脚本telnet到位置B。当我确定文件存在时,它会检查位置A本身。这是我的问题。。。由于我需要在位置B中搜索…

因此
文件存在
命令始终适用于本地文件系统。如果您想检查远程系统是否有文件,您必须
exp\u发送
it一些说明来为您进行检查。不幸的是,我不能从你的描述中完全分辨出你在说什么,所以我实际上无法建议如何去做


您需要一个
中断
,然后
放入“文件已复制”
行,否则它将再次循环。你可能不想那样

Donal合理地提到了将exp\u send作为访问远程文件系统的工具。但是,如果这是一个FTP上下文,我更喜欢基于Tcl FTP库的(纯Tcl而非Expect)解决方案;我觉得这更方便、更易懂、更简洁。

然后您需要发出ssh/ftp/which_协议命令来查询远程目录。感谢您的回复。关于代码,我只是写了一些粗略的伪代码来说明我的意思。我将研究你建议的这两种方法。。