Пакетный параметр% ~ s1 дает неверное 8.3 короткое имя

Я пытаюсь написать командный файл в Windows XP, который принимает полный путь и выводит версию 8.3 короткого имени ...

@echo off
echo "%~s1"

Я столкнулся с одним конкретным случаем, когда это выводит неверный путь и файл ...

C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"

Обратите внимание, что вышеприведенный вывод ("C: \ DOCUME ~ 1 \ angus \ LOCALS ~ 1 \ TEMPOR ~ 1 \ Content.IE5 \ 2JSTM34V \ 62_1_ ~ 1.JA2M34V \ 62 [1] .ja2") не существует. Однако если я удалю из этого вывода раздел «.JA2M34V \ 62 [1]», то полученная строка будет правильным путем к исходному входному файлу.

Похоже, это проблема с использованием скобок ([]) в имени файла. Если я создам файл 62.ja2 в том же каталоге, вывод будет правильным ...

C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"

Это ошибка в Windows? Кто-нибудь знает, есть ли обходной путь, позволяющий пакетному файлу правильно обрабатывать это имя файла?

Ответы на вопрос(1)

Ваш ответ на вопрос