Автоматический переход в папку при ее создании
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Автоматический переход в папку при ее создании
Здравствуйте!
Имеется vb скрипт для кнопки на панели инструментов, который создает папку с именем файла под курсором и перемещает в нее этот файл.
Подскажите пожалуйста как нужно его дополнить, чтобы при нажатии на кнопку на панели инструментов при нажатой клавише Shift автоматически перейти во вновь созданную папку.
Имеется vb скрипт для кнопки на панели инструментов, который создает папку с именем файла под курсором и перемещает в нее этот файл.
Подскажите пожалуйста как нужно его дополнить, чтобы при нажатии на кнопку на панели инструментов при нажатой клавише Shift автоматически перейти во вновь созданную папку.
Нажатие Shift средствами VBS не обработать. Если хочешь сразу войти в эту папку, тогда добавь где-то в конце скрипта
ЗЫ Сам не проверял, так ведь и скрипта-то твоего я тут не вижу 
Код: Выделить всё
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}"скрипт собственно вот
но вариант с WshShell.SendKeys "{ENTER}" не подходит, так как курсор находится не на новой папке, которую нужно открыть.
Может есть другое решение?
В идеале хотелось бы, чтобы скрипт работал в двух вариантах:
1. перемещал файл в папку, при нажатии на кнопку на панели инструметов
2. перемещал файл в папку и открывал ее, принажатии на кнопку на панели инструментов и удерживаемой клавише Shift.
Код: Выделить всё
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()
Может есть другое решение?
В идеале хотелось бы, чтобы скрипт работал в двух вариантах:
1. перемещал файл в папку, при нажатии на кнопку на панели инструметов
2. перемещал файл в папку и открывал ее, принажатии на кнопку на панели инструментов и удерживаемой клавише Shift.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
А PowerPro - будьте любезны. Например, вот так.Нажатие Shift средствами VBS не обработать
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Стар я стал, видать вижу плохоВахмурка писал(а):Например, вот так.
2 Lari
Извини, но со скриптом у тя чой-та не таво. Зачем вот тут
Код: Выделить всё
Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
LoopКакой по идее должен быть алгоритм, когда выделено несколько файлов?
Последний раз редактировалось Volniy Вт янв 08, 2008 01:52, всего редактировалось 1 раз.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Да вы, батенька, педант. Ну, не Shift, а Ctrl - разве это важно?!
По делу. Все сводится вот к чему:
ctrl - это функция, возвращающая "истину", если Ctrl нажат. Есть аналогичная функция shift. А параметр Move ("истина" - уничтожить старый комментарий, "ложь" - сохранить) может быть передан скрипту в явной форме.
Что же до "Тоталовской панели", то нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово.
По делу. Все сводится вот к чему:
Код: Выделить всё
if(ctrl)
Move = 1Что же до "Тоталовской панели", то нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Понятно. Наверное, тогда и я в своем хелпере такую же х**ню могу организовать через ту же GetKeyboardState. Если, конечно, найду его (хелпера) исходники...Вахмурка писал(а):...нажатие клавиши отслеживается просто в момент отработки оператора. Как именно запущен на выполнение скрипт - абсолютно фиолетово.
PS Ты со словом педант немного поосторожней. Начало этого слова как-то напрягает
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
А также педаль, педикюр, педиатр, педагог...
Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки.
Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
-
DrShark
- Сообщения: 911
- Зарегистрирован: Сб окт 21, 2006 20:27
- Откуда: Kyiv, Ukraine
- Контактная информация:
Закинуть можно. Давай определимся, как ТК должен вести себя при создании нескольких папок способами, упоминавшимися, например, здесь или здесь. Вход должен выполнятся в первую папку из перечисленных?Вахмурка писал(а):Кстати, а не закинуть ли Гислеру пожелание: При нажатии Shift+F7 не только создавать директорию, но и входить в нее. В кодах это - две строки.
Кстати, интересно, что бы мог означать пост
Это метафора такая?Valentino писал(а):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.
Славненько... м-да
2Volniy
по поводу
и правда не совсем корректно... но в написании vbs не силен, поэтому взял какой-то пример и написал то, что хотел. Буду рад, если поправите
2ALL
Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш.
2Volniy
по поводу
Код: Выделить всё
Set TempFile = FSO.OpenTextFile(CurFile, 1)
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
Loop
2ALL
Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Открой TOTALCMD.INC и найди команды:Каким образом зайти в созданную папку по скрипту??? Без нажатия дополнительных клавиш.
Код: Выделить всё
cm_Return
cm_GoToDirСайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
2 Вахмурка
Команды эти в VBS может передавать только с помощью моего хелпера.
. Только, я повторяюсь, опиши подробно требуемый алгоритм работы скрипта (особенно интересует вариант когда выделен не один файл а несколько).
Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так?
Команды эти в VBS может передавать только с помощью моего хелпера.
И поправлюLari писал(а):Буду рад, если поправите
Предполагаю: создается папка с именем файла под курсором и все выделенные файлы в нее перемещаются. Так?
Вообще-то команда cm_GoToDir на сколько я понял работает непосредственно с директорией находящейся под курсором.
Получается не подходит, т.к. после создания папки скриптом курсор на нее не устанавливается. Вот если бы создавать папку командой cm_mkDir без диалога ввода имени, то cm_GoToDir была бы самое то.
И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом.
Получается не подходит, т.к. после создания папки скриптом курсор на нее не устанавливается. Вот если бы создавать папку командой cm_mkDir без диалога ввода имени, то cm_GoToDir была бы самое то.
И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом.
-
DrShark
- Сообщения: 911
- Зарегистрирован: Сб окт 21, 2006 20:27
- Откуда: Kyiv, Ukraine
- Контактная информация:
При условии, что TC включена командная строка,Lari писал(а):И еще можно ли средствами vbs написать в командной строке что-то типа:
cd C:\...\папка_которую нужно открыть ? если да то какаим образом.
можно так:[Layout]
CmdLine=1
Код: Выделить всё
WshShell.SendKeys "{RIGHT}"
WshShell.SendKeys "cd папка_которую нужно открыть"
WshShell.SendKeys "{ENTER}"