This code seems to work, but I wonder if I am doing it the correct way. (Yesterday, Leo showed me I was doing something else the wrong way.)
The parameter "folder" really is either a file or folder. I wrote this thinking I was dealing with a string and vector is what came up when I was learning how to do this. I think sometimes it is an Item that is being passed, not a string. I put the complete code at the bottom.
function move(folder, cmd, dest) {
var vector = factory.Vector();
vector.push_back(folder);
cmd.SetFiles(vector);
cmd.SetDest(dest);
cmd.Runcommand("Copy MOVE");
}
function moveAs(folder, cmd, dest, name) {
var vector = factory.Vector();
vector.push_back(folder);
cmd.SetFiles(vector);
cmd.SetDest(dest);
cmd.Runcommand("Copy MOVE AS " + name);
}
I will post the complete code, because I don't know enough to know what is important.
var factory = DOpus.Create();
function OnClick(clickData) {
var cmd = clickData.func.command;
var clicked = clickData.func;
var selFolders = clicked.sourcetab.selected;
DOpus.ClearOutput();
//Move folders
for (var selected = new Enumerator(selFolders); !selected.atEnd(); selected.moveNext()) {
//DOpus.Output("running process");
if (selected.item().is_dir) {
process(selected.item(), cmd);
} else {
//DOpus.Output(selected.item().name);
//move(selected.item(), cmd, "\\\\AMD\\_TestDirectory\\Files")
}
}
//Move files
for (var selected = new Enumerator(selFolders); !selected.atEnd(); selected.moveNext()) {
if (selected.item().is_dir) {
//dig deeper
findArchives(selected.item(), cmd);
}
}
}
function process(folder, cmd) {
var contentFolder = "\\\\AMD\\_TestDirectory\\Content";
var rootFolder = "\\\\AMD\\_TestDirectory";
//var vector = factory.Vector(folder);
var match = false;
if (testContentFolder(folder.name)) {
match = true;
move(folder, cmd, rootFolder);
} else if (testMyLibraryFolder(folder.name)) {
match = true;
moveAs(folder, cmd, rootFolder, "Content");
} else {
if (testSubfolder(folder.name)) {
match = true;
move(folder, cmd, contentFolder);
}
}
if (match == false) {
//DOpus.Output("no match");
//DOpus.Output("Folders below: "+ folder.RealPath);
var folderEnum = DOpus.FSUtil.ReadDir(folder.RealPath);
while (!folderEnum.complete) {
var folderItem = folderEnum.Next();
if (folderItem.is_dir) {
process(folderItem, cmd)
}
}
}
}
function testContentFolder(folderName) {
//DOpus.Output("testing content match");
return String(folderName).toLowerCase() == "content";
}
function testMyLibraryFolder(folderName) {
//DOpus.Output("testing my content match");
return String(folderName).toLowerCase() == "my library";
}
function testSubfolder(folderName) {
var subFolders = [
"data",
"aniBlocks",
"Animals",
"runtime",
"Camarea Presets",
"Documentation",
"Documents",
"Environment",
"Environments",
"Figures",
"General",
"Light Presets",
"People",
"Presets",
"Props",
"Readme",
"Render Presets",
"Scene",
"Scene Builder",
"Scene Subsets",
"Scripts",
"Shader Presets",
"Templates",
];
for (var counter = 0; counter < subFolders.length - 1; counter++) {
//DOpus.Output("testing subfolder match: " + counter + ":" + subFolders[counter]);
//DOpus.Output(String(folderName).toLowerCase());
// DOpus.Output(subFolders[counter].toLowerCase());
if (String(folderName).toLowerCase() == subFolders[counter].toLowerCase()) {
return true;
}
}
return false;
}
function move(folder, cmd, dest) {
var vector = factory.Vector();
vector.push_back(folder);
cmd.SetFiles(vector);
cmd.SetDest(dest);
cmd.Runcommand("Copy MOVE");
}
function moveAs(folder, cmd, dest, name) {
var vector = factory.Vector();
vector.push_back(folder);
cmd.SetFiles(vector);
cmd.SetDest(dest);
cmd.Runcommand("Copy MOVE AS " + name);
}
function findArchives(folder, cmd) {
//DOpus.Output(folder.RealPath);
//var contentFolder = "\\\\AMD\\_TestDirectory\\Content";
//var rootFolder = "\\\\AMD\\_TestDirectory";
//var vector = factory.Vector(folder);
var path = "\\\\AMD\\_TestDirectory\\Files";
//DOpus.Output("no match");
//DOpus.Output("Folders below: "+ folder.RealPath);
var folderEnum = DOpus.FSUtil.ReadDir(folder.RealPath);
while (!folderEnum.complete) {
var item = folderEnum.Next();
if (item.is_dir) {
//DOpus.Output(" " + folderItem.RealPath);
findArchives(item, cmd)
} else {
regex = /\.(?:rar|zip)$/;
if (regex.test(item.name)) {
move(item, cmd, path);
} else if (item.name == "index.url" || item.name == "Documents.txt" || item.name == "Prem.url" || item.name == "Manifest.dsx" || item.name == "Supplement.dsx") {
//DOpus.Output("deleting" + item);
cmd.ClearFiles;
cmd.AddFile(item);
cmd.RunCommand("Delete Recycle");
}
}
}
}