Тема: VBScript: получение длинного имени файла/папки по короткому имени
Способ получения короткого имени объекта файловой системы [как правило, полного пути — обычно требуется именно полный путь, а не только имя] по имеющемуся обычному, длинному имени наличествует в Windows Script Host изначально в объекте Scripting.FileSystemObject.
Для папки:
* короткое имя — метод .ShortName;
* полный путь — метод .ShortPath.
Для файла аналогично:
* короткое имя — метод .ShortName;
* полный путь — метод .ShortPath.
Обратный же процесс — получение длинного имени объекта файловой системы по имеющемуся короткому имени в Windows Script Host, к сожалению, отсутствует. Предлагается следующий способ определения длинного имени посредством Проводника:
Option Explicit
Dim objShell
Dim objFolder
Dim objFolderItem
' C:\PROGRA~1\WINDOW~1\ACCESS~1\wordpad.exe
' C:\Program Files\Windows NT\Accessories\wordpad.exe
Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\PROGRA~1\WINDOW~1\ACCESS~1")
If Not objFolder Is Nothing Then
' Длинное имя [полный путь] папки
WScript.Echo objFolder.Self.Path
Set objFolderItem = objFolder.ParseName("wordpad.exe")
If Not objFolderItem Is Nothing Then
' Длинное имя [полный путь] файла
WScript.Echo objFolderItem.Path
Set objFolderItem = Nothing
End If
Set objFolder = Nothing
End If
Set objShell = Nothing
WScript.Quit 0
Автор идеи — kefi.