MATLAB 批量檔案重新命名(詳細解釋)
這段時間在用 matlab 做手寫數字識別,處理樣本的時候需要對樣本檔案進行重新命名,可是有好多,總不能一個一個重新命名吧,於是上網百度了好多,不過大多都一樣,但是沒有解釋,只有乾巴巴的程式,弄了好一會才弄清楚(我太菜了……),於是寫下了以備後用。
更新
這裡我會列出對本文的更新。
- 2017 年 3 月 21 日:優化排版,去除多餘和易誤導人的語句。
- 2017 年 3 月 25 日:優化程式碼,增加重新命名成功失敗提示,增加程式的一點說明。
問題
假設我有 0.bmp
, 1.bmp
, 2.bmp
, ……,99.bmp
等 100 個 bmp
影象檔案,出於某種需要我要在名字前加上一個 RH_
程式碼
files = dir('*.bmp');
len=length(files);
for i=1:len
oldname=files(i).name;
newname=strcat('RH_', oldname);
command = ['rename' 32 oldname 32 newname];
status = dos(command);
if status == 0
disp([oldname, ' 已被重新命名為 ', newname])
else
disp([oldname, ' 重新命名失敗!' ])
end
end
解釋一下程式:
- 用
dir
函式獲得工作目錄下所有bmp
檔案資訊,返回的file
是一個 結構體,裡面包含了檔名、修改時間等資訊,我們用的就是第一個域名字name
- 獲得
bmp
檔案的個數len
- 每一次迴圈用
strcat
函式將RH_
與原檔名oldname
連線起來,然後使用dos
呼叫作業系統命令替換掉原檔名
關於這個 dos
函式的用法,這裡引用下 dos
函式的幫助
status = dos(command)
executes the specified MS-DOS® command for Windows® platforms, and waits for the command to finish execution before returning the exit status to the status variable.
這個函式實際上就是呼叫執行作業系統命令,比如這裡的 rename
命令,32
是 ASCII 碼,表示空格。
rename oldname newname
一點說明
我上面的程式是將程式和我要重新命名的圖片放在了 MATLAB 的 當前路徑 下,所有可以不用寫絕對路徑,但是如果你想要指定圖片檔案的絕對路徑,那麼就要 保證你的路徑中不包含空格,不然會報錯:The syntax of the command is incorrect.
同樣引用下 這篇文章 的說法:
Rename the file “computer hope.txt” to “example file.txt”. Whenever dealing with a file or directory with a space, it must be surrounded with quotes. Otherwise, you’ll get the The syntax of the command is incorrect error.
END
好了,又是十二點了,就到這吧,歡迎交流!