1. 程式人生 > >利用Matlab批量修改檔名

利用Matlab批量修改檔名

這段時間在用matlab做畢設,所以從vot裡面下很多的資料來測試結果,而對於從其他地方下的資料就需要做一丟丟的處理,也是為了方便。這裡就需要對資料進行重新命名,一般一個訓練集就有一千多,我總不能一個一個重新命名吧,於是想到matlab對於這種批處理的事情肯定比C或者C++方便多了。就想著寫個簡單的小程式來實現重新命名。我這裡是有從其他地方下載好的資料,命名方式是”im00001.jpg“這種,需要重新命名成“000001.jpg”這種,也就是把img去掉,程式碼如下:

file = dir('*.jpg')
len = length(file)
for i = 1 : len
   oldname = file(i
).name; newname = num2str(i,'%08i.jpg'); eval(['!rename' 32 oldname 32 newname]); end

接下來一點一點解釋:

  1. 首先用dir函式獲得工作目錄下所有jpg檔案資訊,返回的file是一個結構體,裡面包含了檔名、修改時間,大小等資訊,我們用的就是第一個域名字name
  2. 獲得jpg檔案的個數
  3. 寫一個小的迴圈,用num2str函式來獲得新的檔名
  4. 重點就是這個eval函式的用法,這個函式實際上就是執行將括號裡表示式中的matlab程式碼,“!”的意思是呼叫Windows系統函式,比如這裡呼叫得rename系統函式,32是ASCII碼,表示空格,也可以使用逗號代替,如把eval函式呼叫改成下面形式:
eval(['!rename' oldname newname]);

實際上eval括號裡的意思是這樣:

rename oldname newname