%~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
とすればよいようです。
つまり、一度に短い名前にするのではなく、先にディレクトリパスを短い名前にしてから、次にファイル名を短い名前にするとよいようです。