View previous topic :: View next topic |
Author |
Message |
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Mon Jan 07, 2008 12:23 Post subject: Автоматический переход в папку при ее создании |
|
|
Здравствуйте!
Имеется vb скрипт для кнопки на панели инструментов, который создает папку с именем файла под курсором и перемещает в нее этот файл.
Подскажите пожалуйста как нужно его дополнить, чтобы при нажатии на кнопку на панели инструментов при нажатой клавише Shift автоматически перейти во вновь созданную папку. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Mon Jan 07, 2008 14:38 Post subject: |
|
|
Нажатие Shift средствами VBS не обработать. Если хочешь сразу войти в эту папку, тогда добавь где-то в конце скрипта
Code: | Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}" |
ЗЫ Сам не проверял, так ведь и скрипта-то твоего я тут не вижу |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Mon Jan 07, 2008 23:07 Post subject: |
|
|
скрипт собственно вот
Code: |
Dim NewFolder, CurFile, FileName, CurPath, NPath, FSO, TempFile, SelFile
CurPath = WScript.Arguments(0) '%P
NewFolder = WScript.Arguments(1) '%O
CurFile = WScript.Arguments(2) '%L
FileName = WScript.Arguments(3) '%N
If NewFolder = FileName then
WScript.Quit()
End If
NPath = CurPath + NewFolder
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(NPath) then
FSO.CreateFolder(NPath)
End If
Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
Loop
If Not FSO.FileExists (NPath & "\" & FileName) then
FSO.MoveFile SelFile, NPath & "\" & FileName
End If
WScript.Quit()
|
но вариант с WshShell.SendKeys "{ENTER}" не подходит, так как курсор находится не на новой папке, которую нужно открыть.
Может есть другое решение?
В идеале хотелось бы, чтобы скрипт работал в двух вариантах:
1. перемещал файл в папку, при нажатии на кнопку на панели инструметов
2. перемещал файл в папку и открывал ее, принажатии на кнопку на панели инструментов и удерживаемой клавише Shift. |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jan 08, 2008 02:18 Post subject: |
|
|
Стар я стал, видать вижу плохо И где там по ссылке про перехват нажатия кнопки на Тоталовской панели с зажатым шифтом?
2 Lari
Извини, но со скриптом у тя чой-та не таво. Зачем вот тут
Code: | Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
Loop | перебираются все выделенные файлы, если только с последним в списке производится следующая далее операция перемещения?
Какой по идее должен быть алгоритм, когда выделено несколько файлов?
Last edited by Volniy on Tue Jan 08, 2008 02:52; edited 1 time in total |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Tue Jan 08, 2008 02:44 Post subject: |
|
|
Да вы, батенька, педант. Ну, не Shift, а Ctrl - разве это важно?!
По делу. Все сводится вот к чему:
ctrl - это функция, возвращающая "истину", если Ctrl нажат. Есть аналогичная функция shift. А параметр Move ("истина" - уничтожить старый комментарий, "ложь" - сохранить) может быть передан скрипту в явной форме.
Что же до "Тоталовской панели", то нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jan 08, 2008 03:10 Post subject: |
|
|
Вахмурка wrote: | ...нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово. |
Понятно. Наверное, тогда и я в своем хелпере такую же х**ню могу организовать через ту же GetKeyboardState. Если, конечно, найду его (хелпера) исходники...
PS Ты со словом педант немного поосторожней. Начало этого слова как-то напрягает |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Tue Jan 08, 2008 12:42 Post subject: |
|
|
А также педаль, педикюр, педиатр, педагог...
Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Tue Jan 08, 2008 14:50 Post subject: |
|
|
Вахмурка wrote: | Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки. |
Закинуть можно. Давай определимся, как ТК должен вести себя при создании нескольких папок способами, упоминавшимися, например, здесь или здесь. Вход должен выполнятся в первую папку из перечисленных?
Кстати, интересно, что бы мог означать пост
Valentino wrote: | And with command [F7] "..\D\..\E\..\F" while being in "C:\" you can create some additional hard disks if your C drive is out of space... So no need to buy additional HDDs anymore! Cool... |
Это метафора такая?
Вообще, подобный способ "создания" дисков мог бы послужить фронтэндом для команды subst. |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Wed Jan 09, 2008 09:34 Post subject: |
|
|
Славненько... м-да
2Volniy
по поводу
Code: |
Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
Loop
|
и правда не совсем корректно... но в написании vbs не силен, поэтому взял какой-то пример и написал то, что хотел. Буду рад, если поправите
2ALL
Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш. |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Wed Jan 09, 2008 12:46 Post subject: |
|
|
Quote: | Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш. | Открой TOTALCMD.INC и найди команды: Code: | cm_Return
cm_GoToDir |
Кроме того, следует поразмышлять о "досовской" команде cd и ее вариациях (скажем, появившаяся в "семерке" команда CD с параметром) _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Wed Jan 09, 2008 15:09 Post subject: |
|
|
2 Вахмурка
Команды эти в VBS может передавать только с помощью моего хелпера.
Lari wrote: | Буду рад, если поправите |
И поправлю . Только, я повторяюсь, опиши подробно требуемый алгоритм работы скрипта (особенно интересует вариант когда выделен не один файл а несколько).
Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так? |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Wed Jan 09, 2008 15:11 Post subject: |
|
|
Вообще-то команда cm_GoToDir на сколько я понял работает непосредственно с директорией находящейся под курсором.
Получается не подходит, т.к. после создания папки скриптом курсор на нее не устанавливается. Вот если бы создавать папку командой cm_mkDir без диалога ввода имени, то cm_GoToDir была бы самое то.
И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом. |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Wed Jan 09, 2008 15:16 Post subject: |
|
|
Volniy wrote: | Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так? |
так НО еще плюс к этому нужно зайти в эту папку. |
|
Back to top |
|
|
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Wed Jan 09, 2008 18:38 Post subject: |
|
|
Lari wrote: | И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом. |
При условии, что TC включена командная строка,
Quote: | [Layout]
CmdLine=1
|
можно так:
Code: | WshShell.SendKeys "{RIGHT}"
WshShell.SendKeys "cd папка_которую нужно открыть"
WshShell.SendKeys "{ENTER}" |
|
|
Back to top |
|
|
|