Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Автоматический переход в папку при ее создании
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Mon Jan 07, 2008 12:23    Post subject: Автоматический переход в папку при ее создании Reply with quote

Здравствуйте!
Имеется vb скрипт для кнопки на панели инструментов, который создает папку с именем файла под курсором и перемещает в нее этот файл.
Подскажите пожалуйста как нужно его дополнить, чтобы при нажатии на кнопку на панели инструментов при нажатой клавише Shift автоматически перейти во вновь созданную папку.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Jan 07, 2008 14:38    Post subject: Reply with quote

Нажатие Shift средствами VBS не обработать. Если хочешь сразу войти в эту папку, тогда добавь где-то в конце скрипта
Code:
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}"

ЗЫ Сам не проверял, так ведь и скрипта-то твоего я тут не вижу Wink
Back to top
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Mon Jan 07, 2008 23:07    Post subject: Reply with quote

скрипт собственно вот

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
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Mon Jan 07, 2008 23:21    Post subject: Reply with quote

Quote:
Нажатие Shift средствами VBS не обработать
А PowerPro - будьте любезны. Например, вот так.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jan 08, 2008 02:18    Post subject: Reply with quote

Вахмурка wrote:
Например, вот так.

Стар я стал, видать вижу плохо Smile И где там по ссылке про перехват нажатия кнопки на Тоталовской панели с зажатым шифтом?

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
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Tue Jan 08, 2008 02:44    Post subject: Reply with quote

Да вы, батенька, педант. Ну, не Shift, а Ctrl - разве это важно?!

По делу. Все сводится вот к чему:
Code:
if(ctrl)
   Move = 1

ctrl - это функция, возвращающая "истину", если Ctrl нажат. Есть аналогичная функция shift. А параметр Move ("истина" - уничтожить старый комментарий, "ложь" - сохранить) может быть передан скрипту в явной форме.
Что же до "Тоталовской панели", то нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jan 08, 2008 03:10    Post subject: Reply with quote

Вахмурка wrote:
...нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово.

Понятно. Наверное, тогда и я в своем хелпере такую же х**ню могу организовать через ту же GetKeyboardState. Если, конечно, найду его (хелпера) исходники...

PS Ты со словом педант немного поосторожней. Начало этого слова как-то напрягает Wink
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Tue Jan 08, 2008 12:42    Post subject: Reply with quote

А также педаль, педикюр, педиатр, педагог...

Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Tue Jan 08, 2008 14:50    Post subject: Reply with quote

Вахмурка 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
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Wed Jan 09, 2008 09:34    Post subject: Reply with quote

Славненько... м-да

2Volniy

по поводу
Code:

Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
Loop


и правда не совсем корректно... но в написании vbs не силен, поэтому взял какой-то пример и написал то, что хотел. Буду рад, если поправите Smile

2ALL
Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Wed Jan 09, 2008 12:46    Post subject: Reply with quote

Quote:
Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш.
Открой TOTALCMD.INC и найди команды:
Code:
cm_Return
cm_GoToDir

Кроме того, следует поразмышлять о "досовской" команде cd и ее вариациях (скажем, появившаяся в "семерке" команда CD с параметром)
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Wed Jan 09, 2008 15:09    Post subject: Reply with quote

2 Вахмурка
Команды эти в VBS может передавать только с помощью моего хелпера.

Lari wrote:
Буду рад, если поправите Smile

И поправлю Very Happy . Только, я повторяюсь, опиши подробно требуемый алгоритм работы скрипта (особенно интересует вариант когда выделен не один файл а несколько).
Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так?
Back to top
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Wed Jan 09, 2008 15:11    Post subject: Reply with quote

Вообще-то команда cm_GoToDir на сколько я понял работает непосредственно с директорией находящейся под курсором.
Получается не подходит, т.к. после создания папки скриптом курсор на нее не устанавливается. Вот если бы создавать папку командой cm_mkDir без диалога ввода имени, то cm_GoToDir была бы самое то.

И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом.
Back to top
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Wed Jan 09, 2008 15:16    Post subject: Reply with quote

Volniy wrote:
Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так?


так НО еще плюс к этому нужно зайти в эту папку.
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Wed Jan 09, 2008 18:38    Post subject: Reply with quote

Lari wrote:
И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом.

При условии, что TC включена командная строка,
Quote:
[Layout]
CmdLine=1

можно так:
Code:
WshShell.SendKeys "{RIGHT}"
WshShell.SendKeys "cd папка_которую нужно открыть"
WshShell.SendKeys "{ENTER}"
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group