|
|
| Title | CopyMoveOnList |
| File Name | CopyMoveOnList.txt |
| Description | Copy or move files and directories with names from one list to files and directories with names from another list |
| Author | Vochomurka |
| Parameters | Source_list, Target_list, Move |
| Plugins Called | file, vec, osd |
| Icon |
|
| Version | 1.0 |
| Updated on | 01.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
Source list is a text file containing file and directory (without ending backslash) names, one per line. Wildcards * and ? are allowed. Target list contains file and directory names, the latter ones with or without ending backslash. Full paths to these lists are first two parameters of the script. Third parameter, if present and equal to 1, implies moving files. The same result (move files rather than copy) is achieved with pressing the Ctrl key at the script execution.
If the third parameter is 0 or absent, the copying occurs.
If number of items in the source list is equal to that in the target list, then each item of the source list is copied/moved to the corresponding file/directory of the target list: first source item is copied/moved to the first target, second - to second, etc.
At the inequality of these numbers two dialog windows are shown in turn. In the first window representing the source list you can pick any number of files that should be copied/moved, in the second window (target list) you can pick any targets. So, each picked source item is copied/moved to each target item.
Example of the source list:
c:\One\Two.txt
d:\Three\Four\*.*
Example of the target list:
e:\Five\Six.htm
f:\Seven\Eight
Number of items is 2 for both lists, therefore the c:\One\Two.txt file will be copied to the e:\Five\Six.htm file that must exist. Source file is deleted if the third script parameter is 1, and not deleted otherwise. Then, all files with the d:\Three\Four\*.* mask are copied (or moved) to the f:\Seven\Eight directory.
Another example. Source list is:
e:\Nine\Ten.exe
c:\One
d:\Three\Four\*.*
Target list is the same as above.
While source list contains 3 items and target list contains 2 items, the dialog window with source list appears. Let's pick c:\One (a directory) and d:\Three\Four\*.* items, and press OK. In the target list let's choose only the f:\Seven\Eight directory. So, the whole c:\One directory and all files from d:\Three\Four\*.* will be moved (if third parameter is 1 or the Ctrl key is pressed) to f:\Seven\Eight. As a result, the f:\Seven\Eight\One directory will be created.
|
Main Page |
|
Total Commander |
|
PowerPro |
|
|