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