|
|
| Название | CopyMoveOnList |
| Имя файла (*.txt) | CopyMoveOnList.txt |
| Описание | Копирует или перемещает файлы/директории, перечисленные в списке-источнике, в файлы/директории, перечисленные в списке-приемнике |
| Автор | Вахмурка |
| Параметры | Список-источник, список-приемник, перемещение |
| Вызываемые плагины | file, vec, osd |
| Иконка |
|
| Версия | 1.0 |
| Дата обновления | 02.07.2009 |
args From, To, Move
local i, j, Text, Str, De, A, Item, Dest
if(ctrl)
Move = 1
if(not validpath(From)) do
messagebox("ok error", "Source list is not specified", "CopyMoveOnList script")
quit
endif
if(not validpath(To)) do
messagebox("ok error", "Target list is not specified", "CopyMoveOnList script")
quit
endif
local What = ifelse(Move, "Move ", "Copy ")
local Source = file.readall(From)
local v = vec.createfromlines(Source)
if(v <= 0) do
messagebox("ok error", "Vector not created", "VEC plugin error #1")
quit
endif
local Target = file.readall(To)
local w = vec.createfromlines(Target)
if(w <= 0) do
messagebox("ok error", "Vector not created", "VEC plugin error #2")
quit
endif
local FromC = vec.length(v)
local ToC = vec.length(w)
if(FromC == Toc) do
for(i = 0; i < FromC; i++)
From = v[i]
CheckPath(From)
To = w[i]
CheckPath(To)
Text = What ++ From ++ " to " ++ To
osd.show(Text, "INFINITE", "14", "Arial", "-1", "255 000 000")
if(Move) do
file.move(From, To)
else
file.copy(From, To)
endif
osd.hide
endfor
quit
endif
local Cap = "Select file(s)/folder(s) to " ++ ifelse(Move, "move", "copy")
Text = Cap ++ " FROM:"
pickstring(Source, Text, 3)
if(not _pickedline_)
quit
From = _pickedline_
De = word(From, 0)
Text = Cap ++ " TO:"
pickstring(Target, Text, 3)
if(not _pickedline_)
quit
To = _pickedline_
A = word(To, 0)
for(i = 1; i <= De; i++)
for(j = 1; j <= A; j++)
Text = word(From, i) - 1
Item = v[Text]
CheckPath(Item)
Text = word(To, j) - 1
Dest = w[Text]
CheckPath(Dest)
Text = What ++ Item ++ " to " ++ Dest
osd.show(Text, "INFINITE", "14", "Arial", "-1", "255 000 000")
if(Move) do
file.move(Item, Dest)
else
file.copy(Item, Dest)
endif
osd.hide
endfor
endfor
quit
Function CheckPath(Path)
if(not validpath(Path)) do
messagebox("ok error", "Path " ++ Path ++ " is invalid", "CopyMoveOnList script")
quit all
endif
quit
Список-источник - текстовый файл, содержащий имена файлов и директорий (без завершающего "\"), по одному имени на строку. Допускаются символы-заменители * и ?. Список-приемник также содержит имена файлов и директорий (с завершающим "\" или без). Полные пути к файлам-спискам представляют собой первый и второй параметры скрипта, соответственно.
Третий параметр задается равным 1, если файлы надо перемещать. К тому же результату (вне зависимоси от параметра) приведет клавиша Ctrl, удерживаемая нажатой в момент запуска скрипта.
Если третий параметр равен 0 или отсутствует, будет производиться копирование, а не перемещение.
Если списки содержат одинаковое число строк, то файлы/директории из первой строки копируются/перемещаются в первый путь-назначение, из второй - во второй, и т. д.
Если числа строк отличаются, то выдаются два диалоговых окна. В первом можно выбрать произвольное количество источников и нажать ОК. Во втором окне выбирается произвольное число путей-приемников. После нажатия ОК все выбранные файлы/директории будут скопированы/перемещены во все выбранные пути-приемники.
Пример списка-источника:
c:\One\Two.txt
d:\Three\Four\*.*
Пример списка-приемника:
e:\Five\Six.htm
f:\Seven\Eight
Поскольку в каждом списке по 2 строки, файл c:\One\Two.txt будет скопирован в файл e:\Five\Six.htm, который должен существовать. Если задано "перемещение", файл-источник будет затем удален. Все файлы из директории d:\Three\Four будут скопированы/перемещены в директорию f:\Seven\Eight.
Второй пример списка-источника:
e:\Nine\Ten.exe
c:\One
d:\Three\Four\*.*
Список-приемник тот же.
Числа строк в списках отличаются (3 и 2), поэтому сначала будет выдан запрос, что копировать/перемещать. Допустим, мы отметили c:\One (это директория) и d:\Three\Four\*.*, и нажали ОК. Во втором окне в качестве пути-приемника выбран путь f:\Seven\Eight. Тогда директория c:\One целиком и все файлы из d:\Three\Four копируются/перемещаются в f:\Seven\Eight.
|
На главную |
|
Все о Total Commander |
|
PowerPro |
|
PowerPro & Total Commander |