Преобразование длинного имени файла в короткое имя файла (8.3) с помощью cmd.исполняемый
Я пытаюсь преобразовать длинное имя файла в короткое имя файла (8.3) в Windows.
пакетный файл с аргументом командной строки работает по назначению:
короче.летучая мышь!--15-->:
@echo OFF
echo %~s1
вызов short.bat C:Documents and SettingsUserNTUSER.DAT
возвращает C:DOCUM~1USERNTUSER.DAT
cmd.exe
со всей командой из сценария ruby.
Как я могу это сделать?
в качестве промежуточного шага я пытался hardcode путь в пакетном файле, но это не работает:
short1.летучая мышь!--15-->:
@echo OFF
SET filename="C:Documents and SettingsUserNTUSER.DAT"
echo %filename%
echo %~sfilename%
echo %filename%
работает, а echo %~sfilename%
выдает следующую ошибку:
The following usage of the path operator in batch-parameter
substitution is invalid: %~sfilename%
For valid formats type CALL /? or FOR /?
если short1.летучая мышь!--15--> работает, как я могу преобразовать это в один-лайнер, который можно назвать cmd.exe c ...
?
есть еще один вопрос (как получить путь DOS вместо пути Windows), однако этот человек специально просит путь текущего каталога.
2 ответов
замените имя файла.txt в имя файла, которое вы хотите преобразовать в 8.3
dir /x filename.txt
затем вам придется разделить результат с пробелами в качестве разделителя (\s в регулярном выражении). Тогда значение с ~ - это ваше короткое имя файла. Если ваше имя файла короткое для начала, то вы не найдете строку, содержащую ~.