2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« エクスプローラで任意の順序で連番を付ける。 | トップページ | テンポラリファイルの代わりに環境変数を使う。 »

2008年2月17日 (日)

%~sIの短いファイル名が変ですね。(障害)

FOR変数やバッチパラメータの%~sIによる短いファイル名の取り出しには障害があるようです。

例えば、
for %I in (aa.aaaa) do echo %~sI
だと、
%~fsI C:\DOCUME~1\User\MYDOCU~1\AA4790~1.AAAaa
%~nsI AA4790~1
%~xsI .AAAaa

また、
for %I in (aaa.aaaa) do echo %~sI
だと、
%~fsI C:\DOCUME~1\User\MYDOCU~1\AAA~1.AAAa.aaaa
%~nsI AAA~1.AAAa
%~xsI .aaaa

などのように、後ろにゴミが付きます。ゴミの付き方は、いろいろです。

で、その代替方法ですが、

for %I in (aa.aaaa) do for %J in ("%~dpsI%~nxI") do echo %~sJ

とすればよいようです。

つまり、一度に短い名前にするのではなく、先にディレクトリパスを短い名前にしてから、次にファイル名を短い名前にするとよいようです。

« エクスプローラで任意の順序で連番を付ける。 | トップページ | テンポラリファイルの代わりに環境変数を使う。 »