2

「ファイル コピー」tcl コマンドでクエリがあります。すべてのファイルをリストに保存して、コマンドで使用しようとしました。しかし、tcl はそれらのファイルを認識していません。

例えば:

    Files are abc.log , foo.log , bar.log

これらのファイルがリストに追加されている場合は list_file と言い、コマンドで list_file を置き換える場合

    lappend list_file abc.log foo.log bar.log
    file mkdir ../../abc
    file copy -- $list_file ../../abc

「エラー コピー、ファイルまたはディレクトリがありません」というエラー メッセージが表示されます。ファイル名を(リストではなく)直接指定して同じことを試してみると、うまくいきます。これで私を導いてください

4

2 に答える 2

3

@evil-ottoの答えを詳しく説明するには...

{*}Tcl 8.5 以降でのみ利用可能です。以前のバージョンでは、いずれかevalまたは複数の呼び出しを使用できました。

を使用してコマンドを作成するeval:

set cmd [list file copy --]
lappend cmd abc.log foo.log bar.log ../../abc
eval $cmd

(これを読んで、使用するコマンドを作成するときにリストの使用が必須である理由を理解してevalください。)

複数の呼び出し (簡単):

foreach fname $list_file {
    file copy -- $fname ../../abc
}
于 2012-12-18T19:25:25.773 に答える
1

に渡されるリストはfile copy展開する必要があります。

file copy -- {*}$list_file ../../abc
于 2012-12-18T18:43:54.660 に答える