首页 > 解决方案 > 如何使用 tcl 从路径中删除最后一个子目录?

问题描述

c:\root\machine\spec\detail\
z:\test\room\tool\

我想删除最后一个子目录,变成这样:

c:\root\machine\spec\
z:\test\room\

如何使用 TCL 做到这一点?

谢谢

标签: tcl

解决方案


file好吧,如果您不介意正斜杠和非训练斜杠,您可以尝试使用:

% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% file dirname $line
c:/root/machine/spec

否则,如果您想保留问题中提到的所有内容,那么我想快速regsub应该没问题:

% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% regsub {[^\\]+\\$} $line ""
c:\root\machine\spec\

或非重新解决方案;拆分和加入:

% set line "c:\\root\\machine\\spec\\detail\\"
c:\root\machine\spec\detail\
% join [lreplace [split $c "\\"] end-1 end-1] "\\"
c:\root\machine\spec\

不同之处在于,file它将知道您给它的路径何时是可能的最高级别,而其他解决方案则不会(它们返回空字符串):

% set line "c:\\"
c:\
% file dirname $line
c:/
% regsub {[^\\]+\\$} $line ""

% join [lreplace [split $c "\\"] end-1 end-1] "\\"

%

推荐阅读