Страница: 1 |
Страница: 1 |
Вопрос: TargetPath = иногда обрезается до 8 символов. Why?
Добавлено: 17.02.07 12:17
Автор вопроса:
AE1
Создаю следующим скриптом ярлык на рабочем столе:
set objFSO = CreateObject("Scripting.FileSystemObject")
strDesktop = WshShell.SpecialFolders("Desktop")
IF Not objFSO.FileExists(strDesktop & "\Ярлычок1.lnk") THEN
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ярлычок1.lnk")
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлика\файлик1.doc"
oShellLink.IconLocation = "X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"
oShellLink.WindowStyle = 1
oShellLink.Save
set oShellLink = NOTHING
END IF
...
IF Not objFSO.FileExists(strDesktop & "\Ярлычок5.lnk") THEN
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ярлычок5.lnk")
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлика\файлик5.doc"
oShellLink.IconLocation = "X:\Прекрасная папка\Какбыдляяфайлика\файлик5.ico"
oShellLink.WindowStyle = 1
oShellLink.Save
set oShellLink = NOTHING
END IF
Set WshShell = NOTHING
Set objFSO = NOTHING
Скрипт работает, но в 1 из 10 случаев TargetPath прописывается как:
"X:\Прекрасн\Какбыдля\файлик1.doc"
Притом IconLocation в 10 из 10 случаев прописывается нормально, т.е.:
"X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"
Т.е. названия папок обрезаются до 8 символов.
Пробовал указывать их вот так:
oShellLink.TargetPath = """X:\Прекрасная папка\Какбыдляяфайлика\файлик.doc"""
Ничего не меняется.
В чем проблема и из-за чего это бывает?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа: Programmer
Вопросов: 71
Ответов: 246
Профиль | | #1
Добавлено: 20.03.07 18:48
Используй такой код:
oShellLink.IconLocation = WSH.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"
Номер ответа: 2
Автор ответа: AE1
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 20.03.07 19:55
Ругается на строку Link.TargetPath...
Object doesn't support this property or method: 'WSH.ExpandEnvirenmentStrings'
Как я понял, изначально проблема с обрезанием адреса состоит в том, что при недоступности диска (например если диск мапится пользователем, а ярлыки создаются системой) и винда не может уточнить поддерживает ли диск длинные имена - то по умолчанию обрезает путь до 8 символов.
Номер ответа: 3
Автор ответа: Programmer
Вопросов: 71
Ответов: 246
Профиль | | #3
Добавлено: 20.03.07 21:54
Перепутал имена обьектов, вот:
oShellLink.IconLocation = WSHShell.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"
Номер ответа: 4
Автор ответа: AE1
Вопросов: 1
Ответов: 2
Профиль | | #4
Добавлено: 20.03.07 22:06
Работает, но точно так же обрезает имена до 8 символов.
Попробуйте создать таким скриптом ярлык, при условии что диск X:\ в системе не замаплен...
Номер ответа: 5
Автор ответа: alroy
Вопросов: 3
Ответов: 28
Профиль | | #5
Добавлено: 23.03.07 12:59
вот кому интересно то смотрите !!!!!
L_Welcome_MsgBox_Message_Text = _
"Этот скрипт создаст ярлык к программе Такойто и поместит его на рабочий стол"
L_Welcome_MsgBox_Title_Text = "Для Ольги"
Call Welcome()
' Создаем ярлык
 im WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell"
 im MyShortcut, MyDesktop, StartupPath
' Узнаем путь к специальной папке
StartupPath = WSHShell.SpecialFolders("AllUsersDesktop"
Set MyShortcut = WSHShell.CreateShortcut(StartupPath & _
"\как тебе нравиться.lnk"
' Устанавливаем свойства для ярлыка
MyShortcut.TargetPath = "C:\katobnov.exe"
MyShortcut.WorkingDirectory = "C:\"
MyShortcut.WindowStyle = 1
MyShortcut.IconLocation = "shell32.dll, 147"
MyShortcut.Save
WScript.Echo "Ярлык к программе такойто создан и помещен на рабочий стол"
Sub Welcome()
 im intDoIt
intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
vbOKCancel + vbInformation, _
L_Welcome_MsgBox_Title_Text )
If intDoIt = vbCancel Then
WScript.Quit
End If
End Sub
Set WSHShell = Nothing