Serge Yolkin
|
Posted: Thu Nov 07, 2013 12:39 Post subject: |
|
|
Вот, решил проблему с критерием "юникодности" имени файла: Code: | var // проверяем на юникодность имена файлов, переданных короткими (8.3) именами
a=new ActiveXObject('Shell.Application'),
c=new ActiveXObject('MSScriptControl.ScriptControl'),
f=new ActiveXObject('Scripting.FileSystemObject'),
n=a.NameSpace(f.getParentFolderName(filename));
c.language='VBScript';
c.allowUI=false;
c.addCode(
'Function FC(E)\n'+
' FC = ""\n'+
' For i = 1 to Len(E)\n'+
' FC = FC & Chr(Asc(mid(E,i,1)))\n'+
' Next\n'+
'End Function\n'
);
Content=fb(fa(filename));
function fa(e){return(n.ParseName(f.getFileName(e)).path);}
function fb(e){var u=c.run('fc',e);return(f.fileExists(u)||f.folderExists(u));}
| Asc, похоже, использует "общевиндовский" механизм замены символов Unicode, а видно файл после преобразования имени, или нет - пусть сама винда и разбирается. Попутно обнаружилось ещё одно воплощение проблемы с именами в плагине: папка с именем "Õ" не обрабатывается вообще, даже скриптом
Добавлено спустя 10 минут:
На VBS, пожалуй, покороче будет, но сейчас не до этого. Кстати, нет ли в VBS команды, преобразующей строку Unicode в строку ANSI целиком, не по одному символу в цикле? |
|