CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Аватара пользователя
ffs2001

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение ffs2001 »

Цитата ffs2001:



…с тильды начинаются когда-то побитые имена.
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*




Iska начинает биться головой об стену…
Аватара пользователя
ffs2001

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение ffs2001 »

Из письма в PM:


Цитата ffs2001:



Где можно прочесть об алгоритмах присвоения windows коротких имён? Нашёл только сведения о тильде в конце, и больше никакой конкретики.



В Базе Знаний:
How Windows Generates 8.3 File Names from Long File Names
. Информации по алгоритму генерации короткого имени по длинному кириллическому имени я не нашёл. Буду рад, если сие кому известно.



P.S. Кое-что на тему поиска и масок есть здесь:
CMD/BAT - [решено] Пакетный файл для выборки из спика файлов текстовый(название и описание)
(с чего сие для меня и началось — «Журден внезапно прозрел») и здесь:
ANY: некоторые документированные особенности использования масок
. Проблема, на самом деле, весьма серьёзная.
Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение El Sanchez »

Цитата Iska:



Информации по алгоритму генерации короткого имени по длинному кириллическому имени я не нашёл
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*




Iska, функция WINAPI GetShortPathName генерит короткие имена. Кириллические имена файлов возвращает в том виде, в котором возвращает их команда dir /x. Но в cmd.exe ее я не нашел, скорее всего используются FindFirstFileW/FindNextFileW со структурой _WIN32_FIND_DATA, одним из членов которой является переменная cAlternateFileName с коротким именем.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение Iska »

Цитата El Sanchez:



Iska, функция WINAPI GetShortPathName генерит короткие имена.
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*




El Sanchez, насколько я понимаю, функция
GetShortPathName
не генерирует, а читает и возвращает уже существующее в каталоге короткое имя для заданного файла. Что скажете?




Цитата El Sanchez:



скорее всего используются FindFirstFileW/FindNextFileW…
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*




Угу, я и
писал
об этом:


читать дальше »



Цитата alexii:



В данном случае (да и в прочих, о коих речь пойдёт ниже, тоже), похоже, следует винить функцию
FindFirstFile Function (Windows)
:


Цитата:



Remarks



The following list identifies some other search characteristics:



* The search includes the long and short file names.





То бишь, в поиск включаются как длинные, так и короткие имена файлов.







Сие, в первую очередь, критично для нас и практически незаметно для пользователей, чей язык укладывается в первую половину кодовой таблицы ASCII.
Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение El Sanchez »

Цитата Iska:



насколько я понимаю, функция GetShortPathName не генерирует, а читает и возвращает уже существующее в каталоге короткое имя для заданного файла
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*




Iska, да, вы правы, проверил.
Аватара пользователя
ffs2001

Re: CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

Сообщение ffs2001 »

Собственно, та задача, из-за которой всё затевалось, решилась банально: более актуальной маской для задачи оказалась ~$*.* , а под неё ничего лишнего не попадает.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»