Путь назначения — пассивная панель. Работает согласно логике метасимвола !& (выделенные элементы или элемент под курсором, если ничего не выделено).
Попробовал несколько вариантов — выкладываю все в виде демо одним пунктом пользовательского меню (работает для обычной и временной панелей).
robocopy — базовый вариант
options — позволяет задать опции отдельно для файлов и папок
separate — то же самое, что options, но запускает отдельно два процесса для файлов и папок
Нюанс: при копировании большого количества элементов, особенно с временной панели, будет ошибка "The command line is too long". Для примера: из system32 можно скопировать около 440 файлов, с временной панели (для system32) — около 200. Сооружение для этого и не предназначено, конечно, и для таких случаев логичнее создать папку, скинуть туда симлинки на все выделенное/найденное/нужное (Alt+F6), и уже потом скопировать ее.
/A-:SH нужен для того, чтобы унять баг robocopy, из-за которого через три раза на пятый папка назначения становится скрытой
Code: Select all
c: robocopy
{
c: robocopy
lua:if panel.GetPanelPrefix(handle, 1)=='tmp' then Keys('F2 c # 2') else Keys('F2 c # 1') end
o: robocopy options
lua:if panel.GetPanelPrefix(handle, 1)=='tmp' then Keys('F2 c # 4') else Keys('F2 c # 3') end
s: separate
lua:if panel.GetPanelPrefix(handle, 1)=='tmp' then Keys('F2 c # 6') else Keys('F2 c # 5') end
--:
#: internal
{
1: robocopy
@start /MIN "rbcp" cmd /C pushd !^"!\" ^&^& (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy %i !#"!\\%~nxi" /E /Z /A-:SH /NP ^|^| robocopy !^"!\\" !#"!\\" !^%i /Z /A-:SH /NP) 1^>^>!#"!\rbcplog" 2^>^&1 ^& popd
2: robocopy temp
@start /MIN "rbcpt" cmd /C (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy !^%i !#"!\\%~nxi" /E /Z /A-:SH /NP ^|^| robocopy !^"%~pi\" !#"!\\" !^"%~nxi" /Z /A-:SH /NP) 1^>^>!#"!\rbcplog" 2^>^&1
3: options
@start /MIN "rbcp" cmd /C pushd !^"!\" ^&^& (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy %i !#"!\\%~nxi" !?$rbcpd$dirs?/Z /E /A-:SH! /NP ^|^| robocopy !^"!\\" !#"!\\" !^%i !?$rbcpf$files?/Z /A-:SH! /NP) 1^>^>!#"!\rbcplog" 2^>^&1 ^& popd
4: options temp
@start /MIN "rbcpt" cmd /C (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy !^%i !#"!\\%~nxi" !?$rbcpd$dirs?/Z /E /A-:SH! /NP ^|^| robocopy !^"%~pi\" !#"!\\" !^"%~nxi" !?$rbcpf$files?/Z /A-:SH! /NP) 1^>^>!#"!\rbcplog" 2^>^&1 ^& popd
5: separate
@start /MIN "rbcpf" cmd /C pushd !^"!\" ^&^& (for %i in (!&) do @echo %~ai ^| findstr /V "d" ^&^& robocopy !^"!\\" !#"!\\" !^%i !?$rbcpf$files?/Z /A-:SH! /NP) 1^>^>!#"!\rbcpfiles" 2^>^&1 ^& popd
@start /MIN "rbcpd" cmd /C pushd !^"!\" ^&^& (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy %i !#"!\\%~nxi" !?$rbcpd$dirs?/Z /E /A-:SH! /NP) 1^>^>!#"!\rbcpdirs" 2^>^&1 ^& popd
6: separate temp
@start /MIN "rbcpf" cmd /C (for %i in (!&) do @echo %~ai ^| findstr /V "d" ^&^& robocopy !^"%~pi\" !#"!\\" !^"%~nxi" !?$rbcpf$files?/Z /A-:SH! /NP) 1^>^>!#"!\rbcpfiles" 2^>^&1
@start /MIN "rbcpd" cmd /C (for %i in (!&) do @echo %~ai ^| findstr "d" ^&^& robocopy !^%i !#"!\\%~nxi" !?$rbcpd$dirs?/Z /E /A-:SH! /NP) 1^>^>!#"!\rbcpdirs" 2^>^&1
}
}
Дополнил демо для совместимости с UNC путями.