|
Название | 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 |