For anyone else who may be interested, this script works on selected Files, Folders and ALL selected Folder contents (files and subfolders no matter how deep they go). It can Add (not Set) Tags for Foldername, Parentname or Both. And it also has an option to Remove ALL existing Tags. Enjoy!
Code: Select all
"1 - Foldername|:showfolders"
end(getinfo("CountSelected") < 1), "At least one File or Folder must be selected!";
$lstF = get(selecteditemspathnames);
foreach ($tkF, $lstF, "<crlf>") {
$tst = exists($tkF);
IF ($tst == "0") { end 1, "Script will close - No items were selected!"; }
ELSEIF ($tst == "1") { $b = regexreplace("$tkF", "(.+\\).+", "$1"); $bfldr = gettoken($b, -2, "\"); tag "$bfldr", "$tkF", 1; continue 2; }
ELSEIF ($tst == "2") { }
$lst = folderreport("items", "r", $tkF, "r");
foreach ($tk, $lst, "<crlf>") {
$b = regexreplace("$tk", "(.+\\).+", "$1");
IF ($b == "") { continue; }
ELSEIF ($b != "") { }
$bfldr = gettoken($b, -2, "\");
tag "$bfldr", "$tk", 1;
}
$b = regexreplace("$tkF", "(.+\\).+", "$1");
$bfldr = gettoken($b, -2, "\");
tag "$bfldr", "$tkF", 1;
}
status "Tagging done!", "339933";
"2 - Parentname|:copyto"
end(getinfo("CountSelected") < 1), "At least one File or Folder must be selected!";
$lstF = get(selecteditemspathnames);
foreach ($tkF, $lstF, "<crlf>") {
$tst = exists($tkF);
IF ($tst == "0") { end 1, "Script will close - No items were selected!"; }
ELSEIF ($tst == "1") { $b = regexreplace("$tkF", "(.+\\).+", "$1"); $bfldr = gettoken($b, -3, "\"); tag "$bfldr", "$tkF", 1; continue 2; }
ELSEIF ($tst == "2") { }
$lst = folderreport("items", "r", $tkF, "r");
foreach ($tk, $lst, "<crlf>") {
$b = regexreplace("$tk", "(.+\\).+", "$1");
IF ($b == "") { continue; }
ELSEIF ($b != "") { }
$bfldr = gettoken($b, -3, "\");
tag "$bfldr", "$tk", 1;
}
$b = regexreplace("$tkF", "(.+\\).+", "$1");
$bfldr = gettoken($b, -3, "\");
tag "$bfldr", "$tkF", 1;
}
status "Tagging done!", "339933";
"3 - Both|:cucopy"
end(getinfo("CountSelected") < 1), "At least one File or Folder must be selected!";
$lstF = get(selecteditemspathnames);
foreach ($tkF, $lstF, "<crlf>") {
$tst = exists($tkF);
IF ($tst == "0") { end 1, "Script will close - No items were selected!"; }
ELSEIF ($tst == "1") { $b = regexreplace("$tkF", "(.+\\).+", "$1"); $bfldr2 = gettoken($b, -2, "\"); $bfldr3 = gettoken($b, -3, "\"); tag "$bfldr2, $bfldr3", "$tkF", 1; continue 2; }
ELSEIF ($tst == "2") { }
$lst = folderreport("items", "r", $tkF, "r");
foreach ($tk, $lst, "<crlf>") {
$b = regexreplace("$tk", "(.+\\).+", "$1");
IF ($b == "") { continue; }
ELSEIF ($b != "") { }
$bfldr2 = gettoken($b, -2, "\");
$bfldr3 = gettoken($b, -3, "\");
tag "$bfldr2, $bfldr3", "$tk", 1;
}
$b = regexreplace("$tkF", "(.+\\).+", "$1");
$bfldr2 = gettoken($b, -2, "\");
$bfldr3 = gettoken($b, -3, "\");
tag "$bfldr2, $bfldr3", "$tkF", 1;
}
status "Tagging done!", "339933";
"4 - Remove Tags|:tagsrmv"
$lstF = get(selecteditemspathnames);
end(getinfo("CountSelected") < 1), "At least one File or Folder must be selected!";
foreach ($tkF, $lstF, "<crlf>") {
$tst = exists($tkF);
IF ($tst == "0") { end 1, "Script will close - No items were selected!"; }
ELSEIF ($tst == "1") { tag "", "$tkF", 1; continue 2; }
ELSEIF ($tst == "2") { }
$lst = folderreport("items", "r", $tkF, "r");
foreach ($tk, $lst, "<crlf>") {
tag "", "$tk", 1;
}
tag "", "$tkF", 1;
}
status "Tags removed!", "FF0000", alert;