文件名

时间:2016-10-19 23:56:04

标签: windows tcl modelsim questasim

我的代码是这样的:

...
proc myProc {first last} {
    for { set i $first } { $i <= $last } { incr i } {
        set i_cur "PlainText$i"
        <command> [glob ./../myDir/${i_cur}*]
    }
}

当我运行它时,任何在该号码后没有任何内容的文件都可以正常运行。但如果在数字之后有什么东西那么它就没有了。 例如,我有名为PlainText0.txtPlainText00.txtPlainText1_Plaintext.txt的有效文件。前两个工作和PlainText1_Plaintext.txt没有。

基本上,我认为我没有正确使用glob /通配符,但不知道如何。

1 个答案:

答案 0 :(得分:0)

这类事情的常见问题是当你得到你想要的错误时,或者当你得到一个需要{{1}返回的列表的命令时}扩展。

如果命令需要扩展列表,则需要使用:

glob

括号前面的<command> {*}[glob ...] 会将结果扩展为多个参数。有时,这需要您迭代结果并一次传递一次:

{*}

当谈到glob本身时,你不清楚foreach filename [glob ...] { <command> $filename } 是否可以被你接受。但是,它与模式PlainText1_stuff.txt匹配。如果不可接受,可能需要PlainText1*;额外的PlainText1.*对于此处匹配的内容非常重要。

另外,请考虑使用.选项-directory,因为它会让您的代码更清晰(尤其是,如果您位于其中一个允许文件名中包含glob元字符的平台上)。

总的来说,你可能会看到这样的事情:

glob

如果需要,可以使用辅助变量。