![]() |
Перемещение файлов в только, что созданную папку из контекстного меню.
Здраствуйте...
Возможно, ли воплотить посредством написания скрипта на VBS перемещение в папку выделенных файлов из контекстного меню? Что бы было более понятно, скажу, что такой пункт есть в программе "FileMenu Tools". Пытался использовать: Код:
On Error Resume Next Код:
On error resume next Пробывал через: Код:
Set WshShell = CreateObject("WScript.Shell") Код:
Set WshShell = CreateObject("WScript.Shell") |
|
Цитата:
1.Выделяется файл 2. Выводится "InputBox" 3.Вводится имя папки. 4.Создаётся папка. 5.Файл вырезается и вставляется в эту созданную папку. Я не могу реализовать вставку в папку. Код:
On Error Resume Next |
Возвращаюсь к своей маникальной идее средствами VBS "передрать" фукцию из FileMenuTools 'Перемещение в папку':
Код:
'************************************* Всё в порядке для одного объекта. А при попытке скопировать несколько объектов - Inputbox запускается равнозначно количеству выделенных в меню объектов. Подскажите, пожалуйста, как ограничить запуск InputBox так, чтобы это не влияло на количество копируемых объектов. Извините, если эта тема кажется лёгкой - я новичёк, и ни как не могу это понять. Спасибо. |
Многократный запуск InputBox - победил, при помощи создания временных файлов. Но пришлось создавать два скрипта.
Скрипт№1: Код:
Set FSO = CreateObject("Scripting.FileSystemObject") Код:
'Запрещаю повторный запуск скрипта: Работает только для 18-и, 20-и объектов. Может, кто подскажет, как победить это несчастье. На данном этапе не могу этого догнать. Спасибо. |
подскажите еще, пожалуйста
есть компьютерный класс шаловливые юзеры очень любят менять всевозможные атрибуты, мишуру и оформления - например, в Сервис->Свойства папки->Общие и ->Вид - насколько я понимаю в самой OC (Windows XP Prof. SP2) предусмотрены значения "по умолчанию" как написать такой скрипт, чтобы он, не мудрствуя лукаво, сам возвращал эти самые "умолчания" при каждом новом входе User'a в систему (или презагрузке)? подскажите если кто знает * * * и еще - если по теме оптимизировать скрипт чтобы перемещал созданные на рабочем столе Юзера файлы .doc, .xls и прочую ересь в папку C:\User\"дата создания"\ Спасибо |
|
Зравствуйте
OSArev Если не тяжело, можете рассказать как и куда девать скрипты, я в этом не очень, а вот этот пункт из FileMenu Tools очень хочется. Еще использую программу RightClicker Pro 1.44 - очень хороша, а можно как-то вставить пункты FileMenu Tools в ее конт. меню, это было бы вообще идеально так как они дополняют друг друга. В RightClicker Pro 1.44, кстати, есть пункт "поместить в..." по типу переместить в папку в FileMenu Tools, но там нельзя ввести свое имя папки - по умолчанию создается папка с именем "Новая папка", не продумали, а как это изменить не знаю, через реестр ничего не получается. |
Цитата:
Напримере моих двух скриптов :Скрипт№1 и Скрипт№2 - это будет выглядеть так: 1.Размещаете их где угодно. 2.Что касается реестра. У меня скрипты расположены по адресу: "C:\Windows\OSA\Moving_to_folder". Значит создаём reg-файл для этого пути. а)Ведущим скриптом является Скрипт№1, значит reg-файл надо создать для него. б)Т.к. скрипт будет использоваться для всех объектов файловой системы, то прописываем скрипт в "AllFilesystemObjects" Код:
Windows Registry Editor Version 5.00 можно без проблем добавлять свои пунткы. |
Цитата:
http://forum.oszone.net/thread-86094.html Можно переделать под свои нужды. Код:
Dim FSO, FldN, Fls, Fl, DtN, FlN |
Цитата:
И ещё иногда появляется ошибка:"Отказано в доступе". Это, наверное связано с именами - не дойдёт до меня никак. Помогите, пожалуйста. |
OSArev, а не получилось победить 18(20) объектов?
|
Цитата:
Если есть, какие идеи - поделись. |
OSArev я в программировании не силен, но есть такая мысль. Если как-то программно начинать так:
Выполняется команда "вырезать" потом уже создать папку, вставить в нее файлы и дать возможность выбрать имя папки. То есть, если ничего не выделено, то и скрипт не будет выполняться, а если выделен один объект или любое их количество то выполняется команда вырезать и далее. Не знаю можно ли так, просто к размышлению. |
Цитата:
1.Во время выполнения скрипта нельзя кликать мышкой, т.к. объекты переместятся в то место где кликнули мышкой. 2.При перемещении папка у меня остаётся открытой. В каком направлении идти? 1-мысля: Надо бы наверное найти способ отслеживать вновь созданную папку и ту же закрывать, но это не спасёт от случайного кликанья мышкой. 2-я мысля: Отключать на время исполнения скрипта мышь(вроде бы где-то встречал). 3-я мысля: Вырезать, как обычно, а из буфера перемещать уже по-другому, но вот каким образом? Собственно скриптик: Код:
'Разрешаем запуск только одного экземпляра, при помощи создания временного файла c именем скрипта: Кстати, насчёт: Цитата:
"Как известно, при выделении более 15 файлов команды контекстного меню, такие как "Открыть/Печать/Редактировать" становятся недоступны. Для отмены данного ограничения проделайте следующее: 1) Запустите редактор реестра ( Win+R -> regedit -> OK) 2) Откройте ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 3) Создайте в ней параметр MultipleInvokePromptMinimum типа DWORD. 4) Установите значение данного параметра равным 16. Для уменьшения количества файлов на которых действует ограничение применения команд, введите значение от 1 до 15. При выделении файлов выше выбранного Вами значения команды в контекстном меню применяться не будут. При указании значения 0 произойдет полное отключение команд, включая команду "Открыть". " Так, что рыть, при перемещении из контекстного, надо в другом направлении(для других команд то же самое). В каком? Может кто и подскажет? |
Цитата:
if WScript.Arguments.Count = 0 then WScript.Quit Arg = WScript.Arguments(0) set FSO=CreateObject ("Scripting.FileSystemObject") File = Arg FileName = FSO.GetBaseName(File) FileName_ext = FSO.GetFileName(File) ParentFolder = Left(Arg, InStrRev(Arg, "\")) NewFolderPath = ParentFolder & "01.Перемещённое" NewFilePath = NewFolderPath & "\" & FileName_ext If not FSO.folderexists (NewFolderPath) then fso.createfolder (NewFolderPath) end if If Not FSO.FileExists(NewFilePath) Then FSO.MoveFile File, NewFolderPath & "\" Else MsgBox "Файл " & FileName_ext & " Уже существует в папке " & NewFolderPath, vbOKOnly + vbExclamation, "Внимание!" End If Set FSO = Nothing Wscript.Quit |
Время: 11:38. |
Время: 11:38.
© OSzone.net 2001-