私はあなたがこれをやっているに違いない:
set filename "c:\0000\${a}_abc.pcm"
ディレクトリ区切り文字だと思われる 2 番目のバックスラッシュは、実際には をエスケープしており$
、変数の置換 [*] を妨げています。
次のいずれかの方法を選択してください。
set filename "c:\\0000\\${a}_abc.pcm"
set filename "c:/0000/${a}_abc.pcm"
set filename [format {c:\0000\%s_abc.pcm} $a]
set filename [file join c: 0000 ${a}_abc.pcm] ;# my preferred solution
Windows はスラッシュを完全に適切に処理します)
[*]実際にはそれよりも悪いです:\000
実際に NUL バイトを取得しているためです。私はTclの文字列の実装とNULの処理に精通していませんが、
$ tclsh <<< 'set a 1234; puts "c:\0000\${a}_foo"' | od -c
0000000 c : \0 0 $ { a } _ f o o \n
0000015