26

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

MoveFilesToNewFolder.vbs:

With CreateObject("Scripting.FileSystemObject")
  Folder = .BuildPath(.GetAbsolutePathName(""), "Moved files")
  If Not .FolderExists(Folder) Then .CreateFolder(Folder)
End With
CreateObject("Shell.Application").NameSpace(Folder).MoveHere WScript.Arguments(0)
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\File Location]
@="Переместить файлы в папку Moved files"

[HKEY_CLASSES_ROOT\*\shell\File Location\command]
@="Wscript.exe C:\\MoveFilesToNewFolder.vbs \"%1\""

Путь в последней строке поправить на свой.

27

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Благодарю ! А без внешнего скрипта не получится, одной командой ? В этом то вся соль...

28

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Почему соль-то? На шару с сетевым диском положить и путь в reg поправить.
Куда большая соль в куче маячащих консольных окон.

29

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

В моём случае придётся копировать файл скрипта на каждый рабочий комп в разных местах города... (такая вот организация !     ) Не беда конечно, но с одной командой и однокликовым запуском файла реестра, было бы изящнее...

30

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Stoller пишет:

В моём случае придётся копировать файл скрипта на каждый рабочий комп в разных местах города...

А reg-файл копировать не придётся?
Почему не сделать командный файл, который при запуске без параметров копирует себя в SendTo?

31

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

shiz
Конечно всё решаемо и не требует обсуждения. Но если вернуться к началу разговора, то интересна реализация задачи - одной командой. Без всяких внешних добавок... Ну, если это не возможно, значит не возможно...

32

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Stoller пишет:

С фиксированным именем, пожалуйста.



Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\File Location]
@="Создать папку с файлами"

[HKEY_CLASSES_ROOT\*\shell\File Location\command]
@="cmd /v/c set \"f=Moved files\"& 2>nul md \"!f!\"& move \"%1\" \"!f!\""

33

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Фантастика ! Значит всё же возможно. Благодарю, Yury.

34

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

А где тут фантастика? Скрытые/системные файлы не переместятся.

35

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

"Фантастика", это конечно просто эмоции, мол всё же можно одной командой, одной строкой решить задачу...
А касательно перемещения системных файлов , либо скрытых - рядовому пользователю к ним прикасаться без спроса, не нужно...
И наверняка можно дополнить команду назначением соответствующих прав на манипуляции с файлами, плюс перемещать файлы с любыми атрибутами...

36 (изменено: Flasher, 2016-07-29 13:25:21)

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Так я и написал, что для фиксированного имени решаемо.
С системными - понятно. А со скрытыми дело иначе обстоит. Тот же Descript.ion - скрытый, а  пользователь хочет видеть комментарии к файлам, например.
Права тут роли не играют, это особенность команд copy/move и т.п.

37 (изменено: Stoller, 2016-07-29 12:23:19)

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Можно ведь сначала скопировать скрытые файлы, потом удалить исходные... Вот и получится перемещение...
А какие сложности при удалении скрытых файлов ?
Вроде как море инфы как это делается...
_http://www.windows-commandline.com/show-delete-hidden-files-command-prompt/
и т.п.

38

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Как перемещать вместе со скрытыми/системными я уже показывал. Сам я пару дней назад пробовал перенести в реестр, но вылез непонятный баг robocopy при вызове оттуда.
А тут писал именно о стандартных командах. Склеить xcopy и del - не проблема, но как оно сработает из реестра нужно смотреть.

39

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

OFF:
В VBS не разбираюсь, но проэкспериментировал ради интереса. Взял код из сообщения #26, сохранил его в файл с расширением vbs. Затем на значок скрипта перетащил значок другого файла. Файл куда-то смылся. Где теперь его искать?

40

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

ypppu, если верить коду, то он должен создать подпапку в текущем местоположении с именем "Moved files" и засунуть файл туда.

41

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Я тоже так думал. Но папка не создаётся. При попытке повторить действие с тем же файлом (даже в любой другой папке) выскакивает стандартное диалоговое окно Проводника "Папка уже содержит... Заменить файл?". То есть файл куда-то ушёл, но куда?

42

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

ypppu, не поленился, поставил себе, попробовал. Работает точно так как я описал. Допиши в vbs строчку.

msgbox folder

43 (изменено: ypppu, 2017-04-07 14:44:37)

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

mozers, спасибо, нашёл где папка создаётся: C:\Documents and Settings\user_name\Moved files. Когда добавил запись в реестр, папка стала создаваться в текущем местоположении.

Правда из корня диска не хочет работать - вылезает ошибка

Windows Script Host пишет:

Сценарий: C:\MoveFilesToNewFolder.vbs
Строка: 5
Символ: 1
Ошибка: Требуется объект: 'CreateObject(...).NameSpace(...)'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript

44

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

ypppu, ну это просто недоработка предложенного скрипта. А надо то всего заменить 2ю строчку на эту:

  Folder = CreateObject("Scripting.FileSystemObject").BuildPath(.GetAbsolutePathName(""), "Moved files")

45

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

ypppu пишет:

Когда добавил запись в реестр, папка стала создаваться в текущем местоположении.

Так в этом и смысл. Одно без другого не годится.

mozers
Ага. Поправил у себя. Только ты сам недоглядел, вставив метод без объекта. Плюс в активной папке подразумевается создание, поэтому моя форма верна, и отделаться лишь присвоением тут нельзя.

46

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Файлы URL не хотят переноситься. LNK переносится некорректно: первый раз почему-то вылезает окно программы 7zip, на второй раз перенос срабатывает, но переносится не сам ярлык, а объект, на который он ссылается. При этом новая папка создаётся по месту нахождения объекта.
Папки скрипт вообще не переносит?

47

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Проблема в том, что в качестве параметра система возвращает путь к объекту, прописанный в lnk.
Для URL вроде бы нужна своя настройка, чтобы пункт появился. У меня на 7-ке его нет.
Папки скрипт переносит без проблем.

48

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Flasher пишет:

Только ты сам недоглядел, вставив метод без объекта.

А посмотреть внимательнее и проверить в работе не пробовал? Сразу строчить? Куда же так спешить?

И вообще в заголовке темы значится "CMD/BAT" так давайте будем в этом ракурсе и держаться.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\File Location]
@="Переместить файлы в папку Moved files"

[HKEY_CLASSES_ROOT\*\shell\File Location\command]
@="cmd /k echo d|xcopy /i /h /c \"%L\" MoveFiles && del /q \"%L\""

Данный вариант проверен на Win7,10 и файлы *.lnk и *.url переносит без проблем.

Flasher пишет:

Папки скрипт переносит без проблем.

При выделении папок, пункт "Переместить файлы в папку Moved files" в контекстном меню не появится.

49

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

mozers пишет:

А посмотреть внимательнее и проверить в работе не пробовал? Сразу строчить? Куда же так спешить?

Кое-кому самому проверить вместо "сразу строчить" не помешает. Невозможна работа подобных записей:
Var = CreateObject("ProgID").егоМетод1(.егоМетод2). Ни в какой документации ничего подобного никогда не встречал, а старые эксперименты давали, естественно, отрицательный результат, ибо иначе был просто нонсенс.

Ошибка:	Неверная или неквалифицированная ссылка
Код:	800A01F9
Источник: 	Ошибка выполнения Microsoft VBScript
mozers пишет:

так давайте будем в этом ракурсе и держаться.

Тема старая и поднята по причине vbs. С какой стати нужно держаться грубого варианта с мелькающими окнами? Это прихоть ТС и только.

mozers пишет:

При выделении папок, пункт "Переместить файлы в папку Moved files" в контекстном меню не появится.

Появится. Мы отсюда пришли.

50 (изменено: mozers, 2017-04-08 14:44:36)

Re: CMD/BAT: Перемещение выделенных файлов командой из контекстного меню

Flasher
Извини, дорогой, чет меня закоротило (посчитал GetAbsolutePathName методом Shell.Application). Неправ. Посыпаю голову пеплом.
В качестве компенсации за моральный ущерб предлагаю заставить твой скрипт перемещать .lnk и .url. Всего то надо исправить в reg-файликах %1 на %L.
Но вот только одновременное перемещение выделенных файлов и папок, увы, невозможно.