Пакетный параметр %~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? Кто-нибудь знает, есть ли обходной путь, позволяющий пакетному файлу правильно обрабатывать это имя файла?

7
задан Gus 2 December 2011 в 09:44
поделиться