Page 1 of 1
Better way dealing with changing tagged item path
Posted: 15 Oct 2017 15:54
by karimmaster101
Hi,
I wish if there is a better way when it comes to change a path of tagged items.
Let's say that I decided to change the drive letter of external drive to a new one though I have tagged items assigned to the old letter.
Or I accidentally rename a folder via windows explorer.
I believe that there is a better way to make the job done instead of the current way. Something like a dialog window where you put the old path and the new one and make Xyplorer update the database automatically.
What do you think?
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 16:18
by highend
Let's say that I decided to change the drive letter of external drive to a new one though I have tagged items assigned to the old letter.
Drive serials are an option for the tag database...
I believe that there is a better way to make the job done instead of the current way. Something like a dialog window where you put the old path and the new one and make Xyplorer update the database automatically.
Can be done via simple scripting (already)...
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 17:09
by karimmaster101
Drive serials are an option for the tag database...
Sorry, I have missed this option
Can be done via simple scripting (already)...
Where I can find such a script?
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 18:21
by highend
Code: Select all
// Replace a drive letter in the tag.dat database with a new one
$old = recase(trim(input("Enter the old drive letter..."), ":\", "R"), "U");
$new = recase(trim(input("Enter the new drive letter..."), ":\", "R"), "U");
$tags = readfile("<xydata>\tag.dat");
writefile("<xydata>\tag.dat", regexreplace($tags, "^$old:\\", "$new:\"));
#887;
echo "Tag database modified!";
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 20:00
by karimmaster101
highend wrote:Code: Select all
// Replace a drive letter in the tag.dat database with a new one
$old = recase(trim(input("Enter the old drive letter..."), ":\", "R"), "U");
$new = recase(trim(input("Enter the new drive letter..."), ":\", "R"), "U");
$tags = readfile("<xydata>\tag.dat");
writefile("<xydata>\tag.dat", regexreplace($tags, "^$old:\\", "$new:\"));
#887;
echo "Tag database modified!";
What if the full path have been changed via windows explorer, like "D:\My files\here is my tag" become "D:\My tag is here"
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 20:19
by highend
What if the full path have been changed via windows explorer, like "D:\My files\here is my tag" become "D:\My tag is here"
1. All entries in the tag.dat file are case-sensitive so please enter your values correctly!
E.g. you enter:
D:\
my files\here is my tag
but the correct path name is
D:\
My files\here is my tag
it would NOT work!
2. If you substitute paths, make sure you write them with a trailing backslash!
Let's say you have these entries in tag.dat
D:\Subfolder\123\pagefile.sys|0|some tag||||||
D:\Subfolder\123456\pagefile.sys|0|another tag||||||
and you want the first one to change to
E:\abc\pagefile.sys|0|some tag||||||
Then do NOT use
D:\Subfolder\123
E:\abc
but
D:\Subfolder\123\
E:\abc\
otherwise
D:\Subfolder\123456\pagefile.sys|0|another tag||||||
would change to
E:\abc456\pagefile.sys|0|another tag||||||
Code: Select all
// Replace a path in the tag.dat database with a new one
$old = input("Enter the old path...", "ATTENTION: This is case-sensitive!");
$new = input("Enter the new path...", "ATTENTION: This is case-sensitive!");
$regex = regexreplace($old, "([\\.+(){\[^$])", "\$1");
$tags = readfile("<xydata>\tag.dat");
writefile("<xydata>\tag.dat", regexreplace($tags, "^" . $regex, $new, 1));
#887;
echo "Tag database modified!";
Re: Better way dealing with changing tagged item path
Posted: 15 Oct 2017 20:32
by karimmaster101
Really, I can't thank you enough.