5

Tcl にファイルが存在するかどうかを確認しようとしていますが、正しい結果が得られないようです。存在することはわかっていても。

while {true} {

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

    puts "File Not copied"

    }

私は常にファイルがコピーされていない行を実行します。put for[file exists $file_name]を実行すると、常に 0 になります。しかし、ファイルが現在のディレクトリに存在することはわかっています。助言がありますか?

編集:

私が追求しようとしている別の方法はdir、tcl スクリプトを使用する場合です。ディレクトリ内のすべてのファイルの出力を取得します。ファイルを出力されたリストと照合し、一致が見つかったときに満たす必要がありifます...

場所 A からスクリプトを実行していますが、スクリプトを使用して場所 B に telnet します。ファイルが存在する場合、場所 A 自体がチェックされます。これは私の問題です...場所Bで検索する必要があるため...

4

2 に答える 2

9

このfile existsコマンドは、常にローカル ファイルシステムで機能します。リモートシステムにファイルがあるかどうかを確認したい場合exp_sendは、チェックを行うためのいくつかの指示が必要になります。残念ながら、あなたの説明からはあなたが何を話しているのかよくわかりません。そのため、実際にどのようにすればよいかアドバイスすることはできません.

breakそして、その行の後に必要ですputs "File copied"。そうしないと、すべてが再びループを回ります。あなたはおそらくそれを望んでいません!

于 2010-11-16T09:38:45.870 に答える
0

Donalは、リモート ファイルシステムにアクセスするための手段としてexp_sendについて合理的に言及しました。ただし、これが FTP コンテキストである場合は、Tcl の FTP ライブラリに基づく (純粋な Tcl を期待しない) ソリューションを好みます。これはより移植性があり、理解しやすく、簡潔だと思います。

于 2010-11-21T15:06:39.797 に答える