今天上午寫的perl---用於鈴音檔名的轉換

wangzh3發表於2005-06-25

我們公司做的彩鈴閘道器,另外一個公司做的一個彩鈴平臺要割接到我們彩鈴閘道器,涉及到彩鈴平臺的鈴音檔案要上來,閘道器的鈴音檔案要下發。

其中,彩鈴平臺的鈴音檔名應該是“12位數字.wav”,但是他們是nnnnnnnnnnnn.wav來儲存的。(每個n代表一個數字)。我們公司的是剛好12位的,對方不願意直接提供“12位數字.wav”這樣的檔案,所有就有了現在的這兩個perl。其中一個是用於把對方的nnnnnnnnnnnn.wav轉換成nnnnnnnnnnnn.wav.另外一個是用於把我們的12位轉成對應的nnnnnnnnnnnn.wav.

[@more@]

第一個,把nnnnnnnnnnnn.wav轉換成12位的。

#name:tt.pl
#fucktion:將hw的abceftzx.wav類似的格式檔案轉換成abceftzx.wav,不限制子目錄的層次
#use:將華為提供的檔案放在某個目錄下,假設是10,這個表示是鈴音id是10開頭的,把tt.pl放在和10同級的目錄下。要求該目錄下不再有其他的鈴音檔案。
#補充說明:進入命令列,執行即可。

use strict;
use warnings;
use File::Path;
use File::Basename;
use File::Spec::Win32;
use File::Find;
use File::Copy;
use Cwd;

my $target=getcwd;
sub wanted{
if (-f $File::Find::name){
if ($File::Find::name=~/wav/){
$_=$File::Find::dir;
$_=~s////g;
my $filename=basename($File::Find::name);
copy($File::Find::name,$target."/".$filename);
}
}
}

find(&wanted,$target);

第二個,把我們12位的轉成分級目錄的。

#name:fuckhw.pl
#fucktion:將12位鈴音id檔案轉換成nnnnnnnnnnnn.wav(每個n為一位佔位數字)
#use:將需要轉換的12位鈴音id放到一個目錄(裡面可以有子目錄),將fuckhw.pl複製到該目錄下,假設是在c:測試,則使用cmd在命令列下進入該目錄, fuckhw.pl即可
#補充說明:nnnnnnnnnnnn.wav可以根據需要隨意調整,只需要在下面對應的地方修改即可,以後也可以做成傳入引數
use strict;
use warnings;
use File::Path;
use File::Basename;
use File::Spec::Win32;
use File::Find;
use File::Copy;
use Cwd;

my $target=getcwd;

sub wanted{
if (-f $File::Find::name){
if ($File::Find::name=~/wav/){
my $firstdir=$target."/".substr($_,0,3);
my $seconddir=$firstdir."/".substr($_,3,3);

if(! -e $firstdir){
mkdir $firstdir||die("error1");;
}

if (! -e $seconddir){
mkdir $seconddir||die("error2");;
}
my $filename=substr($_,6);

copy($File::Find::name,$seconddir."/".$filename);
}
}
}

find(&wanted,$target);

因為程式很短,如果所以就沒有怎麼寫註釋,如果各位看不明白的地方,可以留言,^_^。

也請大家多提建議。非常感謝!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-801011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章