Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: Как можно получить название выделенного файла Добавлено: 29.11.10 11:23  

Автор вопроса:  
Добрый день, господа!

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

Есть открытое окно проводника в котором выделен файл (по нему один раз кликнули левой или правой кнопкой мыши). Как мне получить его название (ну и путь к файлу тоже) в VBS скрипте.

Т.е. будет небольшой скриптик выполняющий действие над файлом привязанный к контекстному меню проводника. Когда пользователь щёлкает на файле правой кнопкой мыши, появляется контекстное меню содержащее пункт с VBS скриптом. Пользователь выбирает этот пункт меню и запускается скрипт. Как скрипту узнать по какому файлу пользователь щёлкнул правой кнопкой?

Все ответившим заранее большое спасибо.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #1 Добавлено: 29.11.10 12:08
надо в реестре прописать (HKEY_CLASSES_ROOT -> определенный тип файла) путь до скрипта
reg-файл
  1.  
  2. Windows Registry Editor Version 5.00
  3.  
  4. [HKEY_CLASSES_ROOT\Winamp.File\shell\Mp3Renamer]
  5. @="Изменить регистр"
  6.  
  7. [HKEY_CLASSES_ROOT\Winamp.File\shell\Mp3Renamer\command]
  8. @="\"E:\\Program_Files\\Programs\\Renamer\\Изменить регистр.exe\" \"%1\""


и в самом скрипте уже обрабатывать сообщение при запуске скрипта
  1.  
  2. Dim objArgs: Set objArgs = Wscript.Arguments
  3. MsgBox objArgs(0)


можно так же скопировать скрипт или ссылку на него в папку send to и уже через контекстное меню выбирать файл -> отправить -> скрипт
  1.  
  2. strSendToPath = WshShell.SpecialFolders("SendTo")
  3.  If objFSO.folderexists(strSendToPath) Then
  4.     If objFSO.fileexists(strSendToPath & "\File Renamer.vbs") Then
  5.         objFSO.deletefile (strSendToPath & "\File Renamer.vbs")
  6. MsgBox "File Renamer удален из папки SendTo", 64, "Переименование..."
  7.     Else
  8.         objFSO.CopyFile Wscript.ScriptFullName, strSendToPath & "\File Renamer.vbs", 1
  9. MsgBox "File Renamer скопирован в папку SendTo", 64, "Переименование..."
  10.     End If
  11.  Else
  12.     MsgBox "Ошибка! Папка SendTo не найдена!", 16, "Переименование..."
  13.  End If

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 29.11.10 22:37
Just, внимательней читай задание. Ему нужно получить ссылку на файл для VBS скрипта, а не для EXE приложения.

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 29.11.10 22:44
  1. Dim objArgs: Set objArgs = Wscript.Arguments
  2. MsgBox objArgs(0)


А это разве не VBSCRIPT?

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 30.11.10 09:57
вот это - нет
Just пишет:
s\\Renamer\\Изменить регистр.exe

Ответить

Номер ответа: 5
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #5 Добавлено: 30.11.10 10:30
AgentFire
блин, точно!
там еще и путь не тот )
E:\\Program_Files\\Programs\\Renamer\\

Ответить

Номер ответа: 6
Автор ответа:
 



Вопросов: 1
Ответов: 2
 Профиль | | #6 Добавлено: 30.11.10 12:56
Спасибо, помогло. Только строка запускающая скрипт в реестре на самом деле должна выглядеть вот так:
  1. wscript.exe "H:\admin\scripts\pdf2jpg\pdf2jpg.vbs" "%1"

Теперь столкнулся со следующей проблемой. :)
Переменная objArgs(0) имеет тип объект и содержит примерно следующую строку "c:\temp\file.pdf"
Вот как бы мне это самое "c:\temp\file.pdf" присвоить какой-нибудь строковой переменной. Если пользуюсь командой
  1. sMyString = objArgs(0)

или
  1. sMyString = cStr(objArgs(0))

получаю сообщение об ошибке

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 30.11.10 13:17
желательно бы еще знатьчто за ошибка

Ответить

Номер ответа: 8
Автор ответа:
 



Вопросов: 1
Ответов: 2
 Профиль | | #8 Добавлено: 30.11.10 14:20
Error: Subscript out of range
Code: 800A0009

Ответить

Номер ответа: 9
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #9 Добавлено: 30.11.10 14:33
в общем если не заморачиваться то так
  1.  
  2. On Error Resume Next
  3. Dim objArgs, sPath
  4. Set objArgs = Wscript.Arguments
  5. sPath = objArgs(0)
  6. On Error GoTo 0
  7. MsgBox sPath



а если заморачиваться то видимо ты пытаешься получить путь файла не передав параметра (просто запускаешь скрипт)
можно попробовать проверять UBound'ом

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам