输入为 C: est\deva cl ewfiles ug.txt
输出应该是“test”“deva”“tcl”“newfiles”
不应打印字符串末尾的“aug.txt”文件或任何其他“.txt”文件。
恢复到我原来的解决方案并添加一些位......
假设这是一个文件路径而不是一个恰好需要分割的随机字符串\
文件分割几乎可以满足你的需求,它返回分割为列表的路径。您还想使用 lrange 来选择除音量之外的所有内容,即类似(未经测试)
lrange [file split $path] 1 end-1
所以你没有 c:\ ,它应该是文件分割返回的列表中的第一个元素
此外,如果您有机会获得目录路径而不是文件名,例如,您可能希望首先使用文件目录名重新测试时有同样的注意事项
lrange [file split [file dirname $name]] 1 end
set f "C:\test\deva\tcl\newfiles\aug.txt"
C:\test\deva\tcl\newfiles\aug.txt
set dname [file dirname [file normalize $f]
C:\test\deva\tcl\newfiles\
set fname [file rootname $f]
aug.txt
set ext [file extension $f]
.txt
file join $dirname $fname
C:\test\deva\tcl\newfiles\aug.txt