findfile и точки в именах каталогов
ACAD2019x64, все обновления установлены. Windows 10, также со всеми обновлениями.
Допустим, существует файл
1 | \\Server\Shared folders\folder.name\file.txt |
Необходимо к нему выполнить findfile. Ок, не вопрос:
1 2 | (setq a "\\\\Server\\Shared folders\\folder.name\\file.txt") (findfile a) ; "\\\\Server\\Shared folders\\folder.name\\file.txt" |
А что будет, если имя файла (неважно по каким причинам) перевести в верхний регистр?
1 | (findfile (strcase a)) ; nil |
Как это?! Глюк? Баг? Фича? Начнем разбираться...
Если файл лежит на локальном диске, или на подключенном сетевом диске, то все срабатывает на ура:
1 2 3 | (setq a "z:\\Autodesk.docs\\file.txt") (findfile a) ; "z:\\Autodesk.docs\\file.txt" (findfile (strcase a)) ; "Z:\\AUTODESK.DOCS\\FILE.TXT" |
Но стоит файлу оказаться на сетевом ресурсе типа \\server, да так, чтобы в именах каталогов хотя бы раз присутствовала точка - и файл будет найден только если его имя полностью соответствует тому, что возвращает тот же getfiled.
Я подумал, что это ACAD глючит. Ну ок, попробуем на C# что-нибудь нарисовать:
1 2 3 4 | string fileName = "\\\\Server\\Shared folders\\folder.name\\file.txt"; Console.WriteLine($"{fileName} : {File.Exists(fileName)}"); Console.WriteLine($"LCase({fileName}) : {File.Exists(fileName.ToLower())}"); Console.WriteLine($"UCase({fileName}) : {File.Exists(fileName.ToUpper())}"); |
И результатом будет True, False, False.
Это что ж получается, смена регистра имени файла приводит к тому, что сама Windows его не находит?! Все чудесатее и чудесатее...