1

Тема: VBScript: получение пути к файлу с длинными именами, имея путь "8+3"

Назначая команду контекстного меню проводника для папки, столкнулся с интересной проблемой: если в реестре прописана команда контекстного меню типа "wscript.exe myscript.vbs %1", то путь к папке (в данном случае "%1") возвращается в стиле "8+3", т.е., например для "C:\Program Files" будет возвращено "C:\Progra~1" и т.п. (несмотря на то, что "%1" заключено в кавычки). Однако, хотелось получить "красивый путь", чтобы его отображать потом, например, в диалоговых сообщениях (если понадобится). Оказалось, что в WSH (VBScript) это можно сделать следующим образом:

Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace("C:\Progra~1")
FolderPath = objFolder.Self.Path

Переменная "FolderPath" будет содержать на выходе в данном случае "C:\Program Files".

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: VBScript: получение пути к файлу с длинными именами, имея путь "8+3"

C файлом можно обойтись следующим образом:

Set objShellApp = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
FolderPath = FSO.GetParentFolderName("C:\Progra~1\AVPers~1.INI")
Set objFolder = objShellApp.NameSpace(FolderPath)
Set objItem = objFolder.ParseName(FSO.GetFileName("C:\Progra~1\AVPers~1.INI"))
FilePath = objItem.Path

Переменная "FilePath" будет содержать на выходе в данном случае "C:\Program Files\AVPersonalAVWIN.INI".

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.