给定一个字符串,我想知道该字符串是否表示有效的文件路径。我看过[file isfile <string>]
和[file isdirectory <string>]
,但如果给定的字符串没有指向现有的文件/目录,那么这两个字符串似乎会返回false
。我只是对字符串的有效性感兴趣。
几乎每个字符串都是有效的文件路径。你能举一些你认为无效文件路径的例子吗?
您可以使用file pathtype
来检查路径是否为绝对路径。此外,file split
和file normalize
可能很有用,这取决于您真正需要什么。
我不知道有什么特殊的方法可以做到这一点。我想你可以试试:
set fn /home/bll/mytest.txt
set fail true
if { [file exists $fn] } {
set fail false
} else {
try {
set fh [open $fn w]
set fail false
file delete $fn
} on error {err res} {
}
}
即使上述方法有效,如果使用某些字符,也可能会导致问题外部命令行中的文件名。
我去掉以下字符只是为了避免可能的命令行问题:
* : " ? < > | [:cntrl:]
我有一个清单,它可能对unix有问题:
* & [] ? ' " < > |
这个窗口列表:
* : () & ^ | < > ' "
此外,尾随点对于windows目录名是非法的。
斜杠或反斜杠可能会导致问题,因为它们是目录分隔符。