我有变量,这是一个保存操作输出文件的路径。敌人的例子
set ResultPath "G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\"
操作后我需要从修改后的文件中导出数据并放入由变量ResultPath给出的文件夹中。我想用数字来称呼它。例如,
"G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\1.am"
其中.am
是文件的格式。问题是,如果我把文件名放在那里,他会给出unicode符号:
echo "$ResultPath\1.am"
G:\KSimonov\PerGeos\2. TCL Scripts\Results\.am
请问您如何避免这种情况? 我找到的方法是使用像
这样的数字的unicodesecho "$ResultPath\u0031"
G:\KSimonov\PerGeos\2. TCL Scripts\Results\1
答案 0 :(得分:0)
您只需要引用反斜杠以避免被解释。你可以这样做:
set ResultPath "G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\"
或:
set ResultPath {G:\KSimonov\PerGeos\2. TCL Scripts\Results\}
有关详细信息,请参阅Tcl在https://www.tcl.tk/man/tcl/TclCmd/Tcl.htm
的引用和替换规则答案 1 :(得分:0)
我有变量,这是一个操作输出文件的路径 被保存
确保正确构建路径,而不是将其作为裸字符串嵌入,以后需要保护:
% set ResultPath [file join G: KSimonov PerGeos {2. TCL Scripts} Results]
G:/KSimonov/PerGeos/2. TCL Scripts/Results
结帐:file join和file split。
答案 2 :(得分:0)
在调用中
echo "$ResultPath\1.am"
反斜杠必须像文件名一样进行转义:
echo "$ResultPath\\1.am"
即使在Windows中也没有理由在文件路径中使用反斜杠(我从来没有这样做)。只需使用
set ResultPath "G:/KSimonov/PerGeos/2. TCL Scripts/Results"
和
echo $ResultPath/1.am
甚至
echo [file join $ResultPath 1.am]
如果要将其打印出来并使其看起来像Windows路径:
puts [file nativename $ResultPath]
G:\KSimonov\PerGeos\2. TCL Scripts\Results
puts [file nativename [file join $ResultPath 1.am]]
G:\KSimonov\PerGeos\2. TCL Scripts\Results\1.am
在你的脚本中,反斜杠就在路上。