|
|
I just ran into a condition that I need to change my file names with different order of the words and convert some words into other words. so lets say the source file names are as:
Avril Lavigne-Smile.rmvb
Christina Aguilera-Your body.rmvb
G.E.M.(邓紫棋)-奇迹国语.rmvb
LADY GAGA-EH EH NOTHING ELSE I CAN SAY(MTV)-英语.rmvb
Lady GaGa-Just Dance-英语.rmvb
Lady Gaga-Poker Face(MTV)-英语.rmvb
Lady Gaga-Poker Face(欣赏版)-英语.rmvb
丁丁-爱要坦荡荡.rmvb
东来东往^朱玲菲-原来心疼是种惩罚-国语.rmvb
何洁-请不要对我说sorry-国语.rmvb
兰馨-无可取代的美丽-国语.rmvb
关喆-你把我灌醉-国语.rmvb
关喆-如果分开我也爱你-940026.rmvb
and the order I want are as:
Smile+Avril Lavigne+Chinese.rmvb
Your body+Christina Aguilera+Chinese.rmvb
奇迹国语+G.E.M.(邓紫棋)+Chinese.rmvb
EH EH NOTHING ELSE I CAN SAY(MTV)+LADY GAGA+English.rmvb
Just Dance+Lady GaGa+English.rmvb
Poker Face(MTV)+Lady Gaga+English.rmvb
Poker Face(欣赏版)+Lady Gaga+English.rmvb
爱要坦荡荡+丁丁+Chinese.rmvb
原来心疼是种惩罚+东来东往^朱玲菲+Chinese.rmvb
请不要对我说sorry+何洁+Chinese.rmvb
无可取代的美丽+兰馨+Chinese.rmvb
你把我灌醉+关喆+Chinese.rmvb
如果分开我也爱你+关喆+940026.rmvb
I tried using Power shell to do it. (Some file name without language attached, so I supposed it should be "Chinese" althought it sometimes doesn't make sense just want to make it simplier).- Get-ChildItem h:\data\songs\RMVB歌库1 -name | ForEach-Object -begin { $count=1 } -process { $person="";$song="";$language="Chinese";%{$data = $_.split("-")}; if (($data.length -eq 2)) { echo "2 ... $count"; $person=$data[0];%{$tn = $data[1].split(".")};$song=$tn[0]} else {%{$tn = $data[2].split(".")}; write-host $data.length.tostring(), $count;$person=$data[0];$song=$data[1];$language=$tn[0]} if (($language -eq "国语")) {$language = "Chinese"} if (($language -eq "粤语")) {$language = "Cantonese"}if (($language -eq "英语")) {$language = "English"} echo "$song+$person+$language.rmvb"; $count++ }
复制代码 Let's make it more clear with this format:- Get-ChildItem h:\data\songs\RMVB歌库1 -name |
- ForEach-Object
- -begin { $count=1 }
- -process { $person="";$song="";$language="Chinese";
- %{$data = $_.split("-")};
- if (($data.length -eq 2)) {
- echo "2 ... $count";
- $person=$data[0];
- %{$tn = $data[1].split(".")};
- $song=$tn[0]
- } else {
- %{$tn = $data[2].split(".")};
- write-host $data.length.tostring(), $count;
- $person=$data[0];
- $song=$data[1];
- $language=$tn[0]
- }
- if (($language -eq "国语")) {$language = "Chinese"}
- if (($language -eq "粤语")) {$language = "Cantonese"}
- if (($language -eq "英语")) {$language = "English"}
- echo "$song+$person+$language.rmvb";
- $count++
- }
复制代码 This is for demo only. The real code which can change the filename is as:- Get-ChildItem h:\data\songs\RMVB歌库1 -name |
- ForEach-Object
- -begin { $count=1 }
- -process { $person="";$song="";$language="Chinese";
- %{$data = $_.split("-")};
- if (($data.length -eq 2)) {
- echo "2 ... $count";
- $person=$data[0];
- %{$tn = $data[1].split(".")};
- $song=$tn[0]
- } else {
- %{$tn = $data[2].split(".")};
- write-host $data.length.tostring(), $count;
- $person=$data[0];
- $song=$data[1];
- $language=$tn[0]
- }
- if (($language -eq "国语")) {$language = "Chinese"}
- if (($language -eq "粤语")) {$language = "Cantonese"}
- if (($language -eq "英语")) {$language = "English"}
- echo "$song+$person+$language.rmvb";
- $count++
- rename-item $_ "h:\data\songs\RMVB歌库1\$song+$person+$language.rmvb";
- }
复制代码 Let me know if this is the code works for you.
|
|