1

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

Необходимо выделить файлы и, из контекстного меню выбрать пункт, с командой для перемещения выделенных файлов в папку (название папки - имя первого файла).
Т.е. :

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

 [HKEY_CLASSES_ROOT\*\shell\File Location\command]
 @="команда"

Помогите пожалуйста реализовать такую команду.

2

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

Stoller
1) Каким образом выделить?
2) Зачем выбирать пункт, когда существуют встроенные методы перемещения?
3) И почему bat, а не vbs/js?

3 (изменено: Stoller, 2016-07-26 12:44:08)

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

Flasher пишет:

1) Каким образом выделить?

Обыкновенное выделение в проводнике нескольких файлов (выделяем первый файл, Shift + позиционируемся на последний файл) либо выделение нескольких файлов ПКМ в Total Commander_е.

Flasher пишет:

2) Зачем выбирать пункт, когда существуют встроенные методы перемещения?

Так гораздо удобнее - переместить все выделенные файлы в другую папку, одним кликом пункта меню ...

Flasher пишет:

3) И почему bat, а не vbs/js?

vbs/js предполагает использование отдельного файла скрипта, что не желательно и более громоздко...
А для данной задачи ведь достаточно команды одной строкой в реестре.

4

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

Stoller
1) Этим занимается пользователь. А я спрашиваю, исходя из каких данных это должен делать скрипт/сценарий? И должен ли?
2) А. Т.е. вам нужно создать пункт, вызывающий команду. Ясно.
3) А ещё предполагает отсутствие окна консоли, от которого для такой простой команды точно никакого толку. Впрочем, есть варианты, где методы можно вызывать с пом. mshta (не без лишних тормозов, правда).
4) Папка где должна создаваться?

5

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

Stoller пишет:

либо выделение нескольких файлов ПКМ в Total Commander

В этом случае проще пользоваться тулбаром/хоткеем и скриптами типа такого без лишних лазов в контекстное меню.

6 (изменено: Stoller, 2016-07-26 13:48:52)

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

Flasher пишет:

исходя из каких данных это должен делать скрипт/сценарий?

Я понимаю это так, в цикле берутся данные о файлах, типа такого (я плохо знаю командный синтаксис...)  : 
cmd /c \"for /l %%i in () do , затем создаётся папка, куда и перемещаются файлы...

Flasher пишет:

предполагает отсутствие окна консоли

Это конечно желательно...

Flasher пишет:

Папка где должна создаваться?

В той же директории , где находятся выделяемые файлы

В этом случае проще пользоваться тулбаром/хоткеем и скриптами

Согласен. В TC это можно реализовать гораздо проще и по другому. Но, задача будет использоваться на разных машинах с неизвестными файловыми менеджерами...

7

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

Совсем новая кнопка (15 дн.) для ТС. Попробуйте:

TOTALCMD#BAR#DATA
%ComSpec% /c echo off&&md
"%O"&for /f "usebackq delims=" %%# in (`type %WF`) do (move "%%#" "%O\"||robocopy.exe . "%O" "%%#" /mov /copyall /ia:sh /nfl /ndl /njh /njs /np /ns /nc)
syncui.dll,11
Переместить выбранные файлы в каталог|с базовым именем объекта под курсором

1

8 (изменено: Stoller, 2016-07-26 13:51:49)

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

Flasher пишет:

Совсем новая кнопка (15 дн.) для ТС.

Благодарю за кнопку ! Но... Какая будет всё-таки команда в реестре для данной задачи ?

9

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

Stoller
Без доп. средств в отношении системного контекстного меню это сделать не получится (разве что на PoSh). В ином случае непосредственно для ТС это можно сделать с помощью утилит TCMC или TCFS2 с вызовом пользовательской команды, записанной в полной аналогии с приведённой кнопкой или скриптом. Для Проводника же нужны решения другого характера, где придётся подключать WinAPI (тут есть примеры на AutoHotKey). Сам же я предпочитаю спецменю, где список всяких команд формируется по усмотрению.

10 (изменено: Stoller, 2016-07-26 14:07:46)

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

Flasher пишет:

Stoller
Без доп. средств в отношении системного контекстного меню это сделать не получится

Жаль... Я думал что возможна аналогия, как с командой создания списка выделенных файлов из контекста :

@="cmd /c \"for /l %%i in () do @ 2>nul (>>\"list.txt\" dir/a/b \"%1\")&& exit\""

11

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

Stoller
Если обратили внимание, то в моей кнопке такая методика и фигурирует, только вот чтобы перебрать выделяемый список файлов, нужен либо параметр, который его возвращает через пользовательскую команду ТС либо более мудрёная технология с API-функциями.

12 (изменено: ypppu, 2016-07-26 15:59:24)

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

Но, раз возможно получение командой, списка выделенных файлов, то возможно ли извлекать из этого списка данные о каждом файле и дальнейшими командами производить с файлами манипулирование (перемещение в созданную папку) ?

13

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

Stoller
Почему вдруг возник такой вопрос уже после появления приведённой кнопки?

14 (изменено: Stoller, 2016-07-26 14:39:10)

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

Так тотал установлен далеко не на всех машинах... Работать придётся в проводнике...

15

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

Stoller
А, вот с этого и надо было начать. Тогда советую в раздел AHK обратиться, там помогут с Проводником. Кажется, yalanne нечто схожее делал. Интерпретатор можно залить на шару, если что. Либо можно установить спецпрограмму, которая создаёт подобные пункты. Я несколько таких видел, правда не особо ковырял функционал за неимением интереса.

Не цитируйте предыдущий пост.

16 (изменено: Rumata, 2016-07-26 15:45:27)

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

пункт контекстного меню Проводника "Send to" не поможет? Одним из пунктов меню будет скрипт, реализующий требуемый функционал.

( 2 * b ) || ! ( 2 * b )

17

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

Так дело не в создании пункта через реестр, а в получении списка.
Ещё вариант - макрос на QTabBar.

18

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

send to это скрытый junction-каталог в профиле пользователя

( 2 * b ) || ! ( 2 * b )

19 (изменено: Stoller, 2016-07-27 11:33:07)

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

Возвращаясь к команде создания списка выделенных файлов из контекста.
Выделяем один файл - этот один файл попадает в список list.txt. Выделяем два файла, три , четыре - аналогично, все выделенные файлы попадают в список.
Почему же тогда нескольким выделенным файлом не быть скопированными ?

20

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

Покажите команду.

21 (изменено: Stoller, 2016-07-27 12:58:21)

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

Создаётся список всех выделенных файлов :

Windows Registry Editor Version 5.00

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

 [HKEY_CLASSES_ROOT\*\shell\File Location\command]
 @="cmd /c \"for /l %%i in () do @ 2>nul (>>\"list.txt\" dir/a/b \"%1\")&& exit\""

22

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

Тут дело в том, что каждый файл в данном случае обрабатывает отдельно. Т.е. толку от цикла for никакого. К тому же вам нужно брать имя первого файла. Всё в это и утыкается.

23 (изменено: Stoller, 2016-07-27 13:41:30)

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

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

24

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

Можно, конечно, извратиться с вариантом, где в некотором временном промежутке записанное в какой-то файл либо реестр имя будет взыматься и по его окончанию перезаписываться. Если не устроит, то в папку с фиксированным именем писать - самое простое.

25

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

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