Hello,
The XYplorer is a good tool, but I just tried script coding for days and still not workable, pls help this:
---------------------------------------------
Here is a folder named A, and also some subfolders and some files in every subfolder, like this:
subfolders under folder A:
1)aaa -> subfolder name is "1)aaa"
2)bbb
3)ccc
......
187)yyy
188)zzz
in every subfolder, here are some files like:
1)f1.jpg -> file name is "1)f1.jpg"
2)f2.jpg
3)f3.jpg
......
I wanna rename all files' name to their own subfolder name + number suffix, and then move them to the root of folder A, and then delete all subfolders.
Results in folder A with no subfolders like:
1)aaa 001.jpg
1)aaa 002.jpg
1)aaa 003.jpg
2)bbb 001.jpg
2)bbb 002.jpg
3)ccc 001.jpg
3)ccc 002.jpg
3)ccc 003.jpg
3)ccc 004.jpg
......
187)yyy 001.jpg
187)yyy 002.jpg
188)zzz 001.jpg
188)zzz 002.jpg
188)zzz 003.jpg
thks...
renmae files in current folder and move them to top folder
-
vortex
- Posts: 3
- Joined: 24 Jan 2012 11:28
-
highend
- Posts: 14940
- Joined: 06 Feb 2011 00:33
- Location: Win Server 2022 @100%
Re: renmae files in current folder and move them to top fold
Instructions: Go to the folder (in your case <path\A>) inside XYplorer, that contains the subfolders with the pictures in it.
Execute the script...
Execute the script...
Code: Select all
/* 24.01.2012, Move files with patterns
::load "<xyscripts>\.snippets\MoveWithPattern.xys";
*/
setting('BackgroundFileOps', 0);
$basefolder = "<curpath>";
$folders = folderreport("dirs", "r", $basefolder, , , "|");
foreach($item, $folders, "|") {
// Extract folder name for affix
$foldername = strpos($item, "\", -1);
$foldername = substr($item, $foldername +1);
$report = folderreport("files", "r", $item, , , "|");
// Move files
$i = 1;
foreach($file, $report, "|") {
moveas "$foldername ".format($i, "000").".jpg", $basefolder, $file;
$i++;
}
}
delete 1, 1, "$folders";
One of my scripts helped you out? Please donate via Paypal
-
vortex
- Posts: 3
- Joined: 24 Jan 2012 11:28
Re: renmae files in current folder and move them to top fold
Thks highend, I'm testing your sample code, and trying modify it to fit my req...
-
highend
- Posts: 14940
- Joined: 06 Feb 2011 00:33
- Location: Win Server 2022 @100%
Re: renmae files in current folder and move them to top fold
Mh? You've listed your requirements and the code was written for them.vortex wrote:Thks highend, I'm testing your sample code, and trying modify it to fit my req...
There are only two things that should be changed (if you need to).
$basefolder = "<curpath>"; - to - $basefolder = inputfolder() or a fixed path if you don't want to change into your root folder manually and delete 1, 1, "$folders"; if you don't want to be prompted for the deletion of the subfolders
One of my scripts helped you out? Please donate via Paypal
-
vortex
- Posts: 3
- Joined: 24 Jan 2012 11:28
Re: renmae files in current folder and move them to top fold
highend, thanks again for your professional help...highend wrote: Mh? You've listed your requirements and the code was written for them.
There are only two things that should be changed (if you need to).
$basefolder = "<curpath>"; - to - $basefolder = inputfolder() or a fixed path if you don't want to change into your root folder manually and delete 1, 1, "$folders"; if you don't want to be prompted for the deletion of the subfolders
Yes I use delete 0, 0, "$folders"; to avoid the prompts due there maybe handreds of subfolders even thousands of subfolders; and I also add codes to deal with null subfolders(without files in subfolder) to remove the prompts appeared, and other little codes in getting current subfolder name.
Now it's working perfect with my real folders/files, just process' on a folder with ~3000 subfolders inside and works fine
here is the final script I use, based on yours:
Code: Select all
/* 24.01.2012, Move files with patterns
::load "<xyscripts>\.snippets\MoveWithPattern.xys";
*/
setting('BackgroundFileOps', 0);
$basefolder = "<curpath>";
$curpathlen = strlen($basefolder);
$folders = folderreport("dirs", "r", $basefolder, , , "|");
foreach($item, $folders, "|") {
// Extract folder name for affix
$foldername = strpos($item, "\", $curpathlen);
$foldername = substr($item, $foldername +1);
$report = folderreport("files", "r", $item, , , "|");
// Move files
if($report!=""){
$i = 1;
foreach($file, $report, "|") {
moveas "$foldername ".format($i, "000").".jpg", $basefolder, $file;
$i++;
}
}
else {
}
}
delete 0, 0, "$folders";
-
highend
- Posts: 14940
- Joined: 06 Feb 2011 00:33
- Location: Win Server 2022 @100%
Re: renmae files in current folder and move them to top fold
One of my scripts helped you out? Please donate via Paypal
-
PeterH
- Posts: 2827
- Joined: 21 Nov 2005 20:39
- Location: DE W11Pro 24H2, 1920*1200*100% 3840*2160*150%
Re: renmae files in current folder and move them to top fold
And please excuse, but for:
you can write:
Of course you could keep it on more lines, if you wish...
(... I like it this way.)
But the "integrated $i++" was just created upon my wish
Code: Select all
$i = 1;
foreach($file, $report, "|") {
moveas "$foldername ".format($i, "000").".jpg", $basefolder, $file;
$i++;
}Code: Select all
$i = 0;
foreach($file, $report, "|") {moveas "$foldername ".format($i++, "000").".jpg", $basefolder, $file;}(... I like it this way.)
But the "integrated $i++" was just created upon my wish
XYplorer Beta Club