找回密码
 注册

QQ登录

只需一步,快速开始

查看: 283|回复: 0

re-organize your filename

[复制链接]
发表于 2013-4-21 18:31:36 | 显示全部楼层 |阅读模式
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).
  1. 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:
  1. Get-ChildItem h:\data\songs\RMVB歌库1 -name |
  2.         ForEach-Object
  3.                 -begin { $count=1 }
  4.                 -process { $person="";$song="";$language="Chinese";
  5.                                 %{$data = $_.split("-")};
  6.                                 if (($data.length -eq 2)) {
  7.                                         echo "2 ... $count";
  8.                                         $person=$data[0];
  9.                                         %{$tn = $data[1].split(".")};
  10.                                         $song=$tn[0]
  11.                                 } else {
  12.                                         %{$tn = $data[2].split(".")};
  13.                                         write-host $data.length.tostring(), $count;
  14.                                         $person=$data[0];
  15.                                         $song=$data[1];
  16.                                         $language=$tn[0]
  17.                                 }
  18.                                 if (($language -eq "国语")) {$language = "Chinese"}
  19.                                 if (($language -eq "粤语")) {$language = "Cantonese"}
  20.                                 if (($language -eq "英语")) {$language = "English"}
  21.                                 echo "$song+$person+$language.rmvb";
  22.                                 $count++
  23.                         }
复制代码
This is for demo only. The real code which can change the filename is as:
  1. Get-ChildItem h:\data\songs\RMVB歌库1 -name |
  2.         ForEach-Object
  3.                 -begin { $count=1 }
  4.                 -process { $person="";$song="";$language="Chinese";
  5.                                 %{$data = $_.split("-")};
  6.                                 if (($data.length -eq 2)) {
  7.                                         echo "2 ... $count";
  8.                                         $person=$data[0];
  9.                                         %{$tn = $data[1].split(".")};
  10.                                         $song=$tn[0]
  11.                                 } else {
  12.                                         %{$tn = $data[2].split(".")};
  13.                                         write-host $data.length.tostring(), $count;
  14.                                         $person=$data[0];
  15.                                         $song=$data[1];
  16.                                         $language=$tn[0]
  17.                                 }
  18.                                 if (($language -eq "国语")) {$language = "Chinese"}
  19.                                 if (($language -eq "粤语")) {$language = "Cantonese"}
  20.                                 if (($language -eq "英语")) {$language = "English"}
  21.                                 echo "$song+$person+$language.rmvb";
  22.                                 $count++
  23.                                 rename-item $_ "h:\data\songs\RMVB歌库1\$song+$person+$language.rmvb";
  24.                         }
复制代码
Let me know if this is the code works for you.



您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|BC Morning Website ( Best Deal Inc. 001 )

GMT-8, 2026-6-11 03:07 , Processed in 0.017116 second(s), 16 queries .

Supported by Weloment Group X3.5

© 2008-2026 Best Deal Online

快速回复 返回顶部 返回列表