|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Перемещение файлов в только, что созданную папку из контекстного меню. |
|
VBS/WSH/JS - Перемещение файлов в только, что созданную папку из контекстного меню.
|
Пользователь Сообщения: 78 |
Здраствуйте...
Возможно, ли воплотить посредством написания скрипта на VBS перемещение в папку выделенных файлов из контекстного меню? Что бы было более понятно, скажу, что такой пункт есть в программе "FileMenu Tools". Пытался использовать: On Error Resume Next Dim Message, fso, Text, FolderName, FileName, Title Message = "Введите название:" Title = "Создание папки" 'создаем объект FileSystemObject в переменную fso Set fso = CreateObject("Scripting.FileSystemObject") FolderName = InputBox(Message, Title) Set Fldr = fso.CreateFolder ("" & FolderName) On error resume next Dim objWshShell, strFolderName, strFullFolderName, Message, Title Message = "Введите название:" Title = "Создание папки" Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objWshShell = WScript.CreateObject("WScript.Shell") strFolderName = InputBox(Message, Title) strFullFolderName = objFSO.BuildPath(objWshShell.SpecialFolders("C , D ,"), strFolderName) If objFSO.FolderExists(strFullFolderName) Then WScript.Echo "Папка с таким именем уже существует." Else objFSO.CreateFolder strFullFolderName WScript.Echo "Folder [" & strFullFolderName & "] created." End If Set objWshShell = Nothing Set objFSO = Nothing WScript.Quit 0 Пробывал через: и Но не хватает знаний.Прошу помощи.Буду признателен. |
|
Отправлено: 19:59, 08-12-2010 |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Цитата OSArev:
И ещё иногда появляется ошибка:"Отказано в доступе". Это, наверное связано с именами - не дойдёт до меня никак. Помогите, пожалуйста. |
|
Отправлено: 01:06, 26-02-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать OSArev, а не получилось победить 18(20) объектов?
|
Отправлено: 22:48, 27-02-2011 | #12 |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Если есть, какие идеи - поделись. |
|
Отправлено: 19:37, 28-02-2011 | #13 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать OSArev я в программировании не силен, но есть такая мысль. Если как-то программно начинать так:
Выполняется команда "вырезать" потом уже создать папку, вставить в нее файлы и дать возможность выбрать имя папки. То есть, если ничего не выделено, то и скрипт не будет выполняться, а если выделен один объект или любое их количество то выполняется команда вырезать и далее. Не знаю можно ли так, просто к размышлению. |
Отправлено: 13:59, 03-03-2011 | #14 |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Цитата alpap:
1.Во время выполнения скрипта нельзя кликать мышкой, т.к. объекты переместятся в то место где кликнули мышкой. 2.При перемещении папка у меня остаётся открытой. В каком направлении идти? 1-мысля: Надо бы наверное найти способ отслеживать вновь созданную папку и ту же закрывать, но это не спасёт от случайного кликанья мышкой. 2-я мысля: Отключать на время исполнения скрипта мышь(вроде бы где-то встречал). 3-я мысля: Вырезать, как обычно, а из буфера перемещать уже по-другому, но вот каким образом? Собственно скриптик: 'Разрешаем запуск только одного экземпляра, при помощи создания временного файла c именем скрипта: Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.FileExists("C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt") Then WScript.Quit End If FSO.CreateTextFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt" '----------------------------------------------------- 'Создание папки: Dim objFSO, objFolder, objShell, strDirectory strDirectory = InputBox("Введите название папки", "Перемещение объектов.") If Len(strDirectory) = 0 Then FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt" strDirectory = WScript.Quit End If FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strDirectory) Then Set objFolder = objFSO.GetFolder(strDirectory) Else Set objFolder = objFSO.CreateFolder(strDirectory) End If '----------------------------------- 'Узнаём путь к новой папке: on error resume next Folderspec = strDirectory Set fso = CreateObject( "Scripting.FileSystemObject" ) Set folder = fso.GetFolder(folderSpec) '------------------------------ ' Используем "Вырезать" для перемещения объектов: Set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys("^X") '-------------------------- ' Перемещаем объекты при помощи "Вставить": folder = folder.Path & "\" set shapp = createobject("shell.application") shapp.open(folder) WScript.Sleep 500 WshShell.SendKeys("^V") '------------------------ ' Удаляем временные файлы: FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt" WScript.Quit Кстати, насчёт: Цитата alpap:
"Как известно, при выделении более 15 файлов команды контекстного меню, такие как "Открыть/Печать/Редактировать" становятся недоступны. Для отмены данного ограничения проделайте следующее: 1) Запустите редактор реестра ( Win+R -> regedit -> OK) 2) Откройте ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 3) Создайте в ней параметр MultipleInvokePromptMinimum типа DWORD. 4) Установите значение данного параметра равным 16. Для уменьшения количества файлов на которых действует ограничение применения команд, введите значение от 1 до 15. При выделении файлов выше выбранного Вами значения команды в контекстном меню применяться не будут. При указании значения 0 произойдет полное отключение команд, включая команду "Открыть". " Так, что рыть, при перемещении из контекстного, надо в другом направлении(для других команд то же самое). В каком? Может кто и подскажет? |
||
Отправлено: 22:08, 03-03-2011 | #15 |
Пользователь Сообщения: 74
|
Профиль | Отправить PM | Цитировать Цитата OSArev:
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 |
|
Отправлено: 00:02, 09-06-2024 | #16 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] задержка при вызове контекстного меню файлов | twisted1 | Microsoft Windows 2000/XP | 34 | 24-05-2017 11:10 | |
Интерфейс - Настройка контекстного меню файлов/папок/дисков .:[все вопросы]:. | zhecka | Microsoft Windows 2000/XP | 294 | 23-09-2015 19:34 | |
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку | zavoruev | Скриптовые языки администрирования Windows | 22 | 28-05-2010 14:04 | |
Интерфейс - запрет контекстного меню только на рабочем столе | alexataa | Microsoft Windows 2000/XP | 0 | 01-03-2010 00:20 | |
не могу создать папку из контекстного меню | Yarikus | Microsoft Windows 95/98/Me (архив) | 0 | 08-01-2005 10:48 |
|