Страница: 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